Возможный дубликат:
Эффективный способ реализации паттерна singleton в Java
Я читал это Best Singleton Implementation In Java, но он не потокобезопасен.
Согласно вики :
if(singleton==null) { synchronized(Singleton.class) { // // Это необходимо, если два потока ожидают у монитора в то // время когда синглтон был инстанцирован if(singleton==null) singleton= new Singleton(); }
}
Но утилита Find Bugs выдает две ошибки при этом: 1. Двойная проверка нуля. 2. Неправильная ленивая инициализация статического поля.
Какой способ лучше,
Правильно ли это :
synchronized (Singleton.class) { if (singleton== null) { singleton= new Singleton(); } }