Я начал изучать синхронизацию в потоках.
Синхронизированный метод:
public class Counter {
private static int count = 0;
public static synchronized int getCount() {
return count;
}
public synchronized setCount(int count) {
this.count = count;
}
}
Синхронизированный блок:
public class Singleton {
private static volatile Singleton _instance;
public static Singleton getInstance() {
if (_instance == null) {
synchronized(Singleton.class) {
if (_instance == null)
_instance = new Singleton();
}
}
return _instance;
}
}
Когда мне следует использовать метод synchronized
и блок synchronized
?
Почему блок synchronized
лучше, чем метод synchronized
?