estaba leyendo this article de "bloqueo doble comprobación" y fuera del tema principal del artículo Me preguntaba por qué en algún momento del artículo, el autor utiliza la siguiente Idioma:doble comprobación de bloqueo artículo
listado 7. el intento de resolver el problema de escritura fuera de orden
public static Singleton getInstance() { if (instance == null) { synchronized(Singleton.class) { //1 Singleton inst = instance; //2 if (inst == null) { synchronized(Singleton.class) { //3 inst = new Singleton(); //4 } instance = inst; //5 } } } return instance; }
Y mi pregunta es: ¿hay alguna razón para sincronizar dos veces algo de código con la misma cerradura? ¿Tiene esto algún propósito?
Muchas gracias de antemano.
Hay una pregunta relacionada "[Mejor Implementación de Singleton en Java] (http://stackoverflow.com/questions/70689/best-singleton-implementation-in-java)" –