Я наткнулся на приведенный ниже код как часть создания синглтона с использованием DoubleLocking
public static ThreadSafeSingleton getInstanceUsingDoubleLocking(){
while(instance == null){
synchronized (ThreadSafeSingleton.class) {
while(instance == null){
instance = new ThreadSafeSingleton();
}
}
}
return instance;
}
Какое значение имеет использование while loop
вместо обычного if block
? Это связано с некоторыми JMM issues
, которые могут повлиять на создание синглтона в многопоточной среде?