Doble comprobación de bloqueo en Android

Según muchos, el lenguaje de bloqueo de doble verificación algo común está roto para Java a menos que esté ejecutando 1.5 o posterior y use elvolatile palabra clave.

Una muestra de cerradura con doble comprobación rota:

// Broken multithreaded version
// "Double-Checked Locking" idiom
class Foo { 
  private Helper helper = null;
  public Helper getHelper() {
    if (helper == null) 
      synchronized(this) {
        if (helper == null) 
          helper = new Helper();
      }    
    return helper;
    }
  // other functions and members...
  }

La muestra proviene de este artículo, que también proporciona detalles sobre cómo solucionarlo:http: //www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.htm

l análisis anterior de @ Pugh es para máquinas virtuales Java. Trabajo en Android y uso con frecuencia bibliotecas que emplean el bloqueo de doble verificación. ¿El modelo de memoria del dalvik VM admite este idioma?

Respuestas a la pregunta(2)

Su respuesta a la pregunta