Recientemente asistí a una presentación que trata algunos patrones de diseño:sincronización interna en el mismo objeto que la sincronización externa
El siguiente código había sido mostradas:
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;
}
tomadas de: Double-checked locking: Take two
Mi pregunta no tiene nada que ver con el patrón mencionado anteriormente, pero con los bloques sincronizados:
¿Hay algún beneficio en la doble sincronización realizada en las líneas 1 & 3 con respecto al hecho de que la operación de sincronización se realiza en el mismo objeto ?
bien ... ¿podría elaborar por favor? Todavía no puedo entender la utilidad de lo anterior. – Yaneeve
La sincronización AFAIK todavía realiza algunos enjuagues. (Consulte http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html#synchronization) –
Oh, me acabo de dar cuenta de que estaba hablando de EXITING. Perdió que –