¿Por qué es el bloque sincronizado mejor que el método sincronizado?
He comenzado a aprender la sincronización en subprocesos.
Método sincronizado:
public class Counter{
private static int count = 0;
public static synchronized int getCount(){
return count;
}
public synchronized setCount(int count){
this.count = count;
}
}
Bloque sincronizado:
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;
}
¿Cuándo debo usar el método sincronizado y el bloque sincronizado? ¿Por qué es el bloque sincronizado mejor que el método sincronizado?