Я начал изучать синхронизацию потоков.Почему синхронизированный блок лучше синхронизированного метода?
Синхронное метод:
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;
}
Когда следует использовать синхронизированный метод и синхронизированный блок? Почему синхронизированный блок лучше синхронизированного метода?
Вы также должны прочитать http://en.wikipedia.org/wiki/Double-checked_locking –
В в первом случае я бы использовал AtomicInteger, и во втором случае я использую 'enum' для Singleton. –
Где он говорит, что лучше? В чем заключается ваш вопрос? – EJP