¿Cómo implementar la inicialización diferida segura para subprocesos?

Cuáles son algunos enfoques recomendados para lograra salvo de amenaza inicialización perezosa? Por ejemplo

// Not thread-safe
public Foo getInstance(){
    if(INSTANCE == null){
        INSTANCE = new Foo();
    }

    return INSTANCE;
}

Respuestas a la pregunta(11)

Su respuesta a la pregunta