Потокобезопасный эффективный способ реализации паттерна singleton в Java? [дубликат]

Возможный дубликат:
Эффективный способ реализации паттерна 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();
}
}
10
задан Community 23 May 2017 в 11:48
поделиться