Java Language Initialisation par défaut sécurisée des threads à l'aide de la classe holder | Mise en œuvre de Bill Pugh Singleton


Exemple

public class Singleton {
    private static class InstanceHolder {
        static final Singleton INSTANCE = new Singleton();
    }

    public static Singleton getInstance() {
        return InstanceHolder.INSTANCE;
    }

    private Singleton() {}
}

Cela initialise la variable INSTANCE lors du premier appel à Singleton.getInstance() , en tirant parti des garanties de sécurité des threads de la langue pour l'initialisation statique sans nécessiter de synchronisation supplémentaire.

Cette implémentation est également connue sous le nom de singleton de Bill Pugh. [Wiki]