Wie Java nur eine Instanz einer Enum pro JVM gewährleistet

8

Wie stellt Java intern sicher, dass pro JVM nur eine Instanz eines ENUM existiert? Wird es erstellt, wenn die Anwendung hochfährt und ab diesem Zeitpunkt, wenn mehrere Threads darauf zugreifen, wird nur das beim Start erstellte Objekt zurückgegeben Oder implementiert es eine ähnliche Doppelsynchronisation wie das Singleton-Muster, so dass selbst wenn mehrere Threads darauf zugreifen, nur eine Einheit erstellt wird?

    
Victor 27.08.2013, 17:11
quelle

2 Antworten

6

wie Sie in dieser Antwort lesen können enum-Instanzen sind statische Klassenfelder und werden als Teil des Klassenladens initialisiert, wenn Sie zum ersten Mal auf die Klasse zugreifen.

classloading wird intern synchronisiert , so dass Enum-Instanzen Singletons (Singletons) sind innerhalb desselben Classloaders, dh wenn die gleiche Enumeration von mehreren Loadern geladen wird, erhalten Sie mehrere Instanzen)

    
radai 27.08.2013, 17:14
quelle
3

Enum-Instanzen werden beim Laden der Klasse erstellt. Wenn dieselbe Aufzählung von mehr als einem Klassenlader geladen wird (wenn Spiele zum Laden von Klassen beispielsweise von einem Web-App-Container abgespielt werden), haben Sie mehrere inkompatible Instanzen im Speicher.

    
Jim Garrison 27.08.2013 17:14
quelle

Tags und Links