Используя логическое значение volatile, которое доступно только для чтения, если экземпляр имеет значение null, могу ли я избежать частого энергозависимого чтения по умолчанию после инициализации экземпляра, как это происходит?Никто не видел, чтобы кто-то рекомендовал двойную проверку блокировки, как это, но, похоже, избегает нестабильного чтения после полной инициализации ...
public class Singleton {
private static volatile boolean initialized = false;
private static Object lock = new Object();
private static Singleton instance;
public static Singleton getInstance(){
if(instance != null) return instance;
if(!initialized){
synchronized(lock){
if(!initialized){
instance = new Singleton();
initialized = true;
}
}
}
return instance;
}
}