Possible Duplicate:
Avoid synchronized(this) in Java?
What is the difference between the two pieces of code ? What are advantages and disadvantages of each?
1)
public class Example {
    private int value = 0;
    public int getNextValue() {
        synchronized (this) {
            return value++;
        }
    }
}
2)
public class Example {
    private final Object lock = new Object();
    private int value = 0;
    public int getNextValue() {
        synchronized (lock) {
            return value++;
        }
    }
}
 
     
     
     
     
     
    