Экземпляр представляет собой поле static final частного вложенного класса, которое загружается только тогда, когда getInstance() впервые ссылается на него. Это потокобезопасно, поскольку загрузка классов JVM уже гарантирована атомарно и происходит раньше, чем та же самая гарантия, на которую опирается нетерпеливая инициализация, но откладывается до первого использования вместо предоплаты.
Пример
// Classic GoF Singleton: enforced by the class itselfpublicclassConfigManager {
privatestaticfinalConfigManagerINSTANCE=newConfigManager();
privateConfigManager() {} // private constructor blocks any other instantiationpublicstaticConfigManagergetInstance() { return INSTANCE; }
}
Итог
Экземпляр представляет собой поле static final частного вложенного класса, которое загружается только тогда, когда getInstance() впервые ссылается на него.
Что такое идиома держателя инициализации по требованию и почему она… · Sobeso