Synchronizacja na „tym” lub prywatnym obiekcie w Javie? [duplikować]
Możliwy duplikat:
Unikaj synchronizacji (tego) w Javie?
Jaka jest różnica między dwoma fragmentami kodu? Jakie są zalety i wady każdego z nich?
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++;
}
}
}