Возможный дубликат:
Эффективный способ реализации одноэлементного шаблона в Java
Я читал эту Лучшую реализацию Singleton в Java, но ее безопасность не была потоковой.
Согласно wiki:
if(singleton==null) { synchronized(Singleton.class) { // this is needed if two threads are waiting at the monitor at the // time when singleton was getting instantiated if(singleton==null) singleton= new Singleton(); }
}
Но утилита Find Bugs дает две ошибки: 1. Двойная проверка нуля. 2. Неправильная ленивая инициализация статического поля.
Каков наилучший способ,
Правильно ли это:
synchronized (Singleton.class) { if (singleton== null) { singleton= new Singleton(); } }