I debugged this one looking at NoThreadClone
, all threads in same group write the same values for the same shared
instance so what would be the issue ?
I muqt say I don't understand this one.
I had a doubt about putting volatile but what for ? Value will change for
same value

Can you explain it to me ?

Thanks


On Monday, September 3, 2012, sebb wrote:

> On 3 September 2012 21:28,  <[email protected] <javascript:;>> wrote:
> > Author: pmouawad
> > Date: Mon Sep  3 20:28:41 2012
> > New Revision: 1380346
> >
> > URL: http://svn.apache.org/viewvc?rev=1380346&view=rev
> > Log:
> > synchronized seems useless as all instances in same Thread Group get
> same value.
>
> It's not useless.
> Please don't just remove synch. without prior discussion.
>
> > Should we add volatile ?
>
> The test element is NoThreadClone, so is shared between threads.
>
> Without sync. or volatile, the value written by one thread may never
> be seen by another thread, or values may be seen out of order.
> This is because the Java Memory Model allows threads to cache shared
> values locally. Only if threads use the same lock is correct operation
> guaranteed.
> This is entirely separate from the locking which may be necessary to
> protect multiple updates to one or more variables.
>
> Using sync/volatile is necessary for safe data publication.
> Unfortunately, most of the time the data does get updated, so such
> bugs are rarely seen.
>
> > Modified:
> >
> jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java
> >
> > Modified:
> jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java
> > URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java?rev=1380346&r1=1380345&r2=1380346&view=diff
> >
> ==============================================================================
> > ---
> jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java
> (original)
> > +++
> jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java
> Mon Sep  3 20:28:41 2012
> > @@ -139,56 +139,56 @@ public class RandomVariableConfig extend
> >      /**
> >       * @return the minValue
> >       */
> > -    public synchronized String getMinimumValue() {
> > +    public String getMinimumValue() {
> >          return minimumValue;
> >      }
> >
> >      /**
> >       * @param minValue the minValue to set
> >       */
> > -    public synchronized void setMinimumValue(String minValue) {
> > +    public void setMinimumValue(String minValue) {
> >          this.minimumValue = minValue;
> >      }
> >
> >      /**
> >       * @return the maxvalue
> >       */
> > -    public synchronized String getMaximumValue() {
> > +    public String getMaximumValue() {
> >          return maximumValue;
> >      }
> >
> >      /**
> >       * @param maxvalue the maxvalue to set
> >       */
> > -    public synchronized void setMaximumValue(String maxvalue) {
> > +    public void setMaximumValue(String maxvalue) {
> >          this.maximumValue = maxvalue;
> >      }
> >
> >      /**
> >       * @return the variableName
> >       */
> > -    public synchronized String getVariableName() {
> > +    public String getVariableName() {
> >          return variableName;
> >      }
> >
> >      /**
> >       * @param variableName the variableName to set
> >       */
> > -    public synchronized void setVariableName(String variableName) {
> > +    public void setVariableName(String variableName) {
> >          this.variableName = variableName;
> >      }
> >
> >      /**
> >       * @return the randomSeed
> >       */
> > -    public synchronized String getRandomSeed() {
> > +    public String getRandomSeed() {
> >          return randomSeed;
> >      }
> >
> >      /**
> >       * @return the randomSeed as a long
> >       */
> > -    private synchronized long getRandomSeedAsLong() {
> > +    private long getRandomSeedAsLong() {
> >          long seed = 0;
> >          if (randomSeed.length()==0){
> >              seed = System.currentTimeMillis();
> > @@ -206,33 +206,33 @@ public class RandomVariableConfig extend
> >      /**
> >       * @param randomSeed the randomSeed to set
> >       */
> > -    public synchronized void setRandomSeed(String randomSeed) {
> > +    public void setRandomSeed(String randomSeed) {
> >          this.randomSeed = randomSeed;
> >      }
> >
> >      /**
> >       * @return the perThread
> >       */
> > -    public synchronized boolean getPerThread() {
> > +    public boolean getPerThread() {
> >



-- 
Cordialement.
Philippe Mouawad.

Reply via email to