2010-12-07 7 views
1

Comment l'initialisation d'une référence d'objet à partir d'un initialiseur statique garantit-elle une publication sûre?Initialisateurs statiques et publication sécurisée

+3

La charge de classe est implicitement synchronisée. –

+0

En fait ... c'est l'initialisation de classe qui est synchronisée. Cela peut arriver «en même temps» que le chargement d'une classe, ou cela peut arriver paresseusement. –

Répondre

3

L'utilisation d'un initialiseur statique est souvent le moyen le plus facile et plus sûr de publier des objets qui peuvent être construits de manière statique:

public static Holder holder = new Holder(42); 

initialiseurs statiques sont exécutées par la machine virtuelle Java au moment de l'initialisation de la classe; En raison de la synchronisation interne dans la JVM, ce mécanisme garantit la publication en toute sécurité des objets ainsi initialisés [JLS 12.4.2].