Отложенная инициализация синглтона Java. Волатильный и синхронизированный метод ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Отложенная инициализация синглтона Java. Волатильный и синхронизированный метод

Сообщение Anonymous »

Почему нам нужно добавлять изменчивые данные в поле, чтобы предотвратить получение неверных данных? Разве мы не можем сделать то же самое, добавив синхронизацию в объявление метода, а не в блок кода?
public class LazySingleton {

private static volatile LazySingleton instance;

private LazySingleton() {
}

public static LazySingleton getInstance() {
if (instance == null) {
synchronized (LazySingleton.class) {
if (instance == null) {
instance = new LazySingleton();
}
}
}
return instance;
}
}

и
public class LazySingleton {

private static LazySingleton instance;

private LazySingleton() {
}

public static synchronized LazySingleton getInstance() {
if (instance == null) {
instance = new LazySingleton();
}
return instance;
}
}


Подробнее здесь: https://stackoverflow.com/questions/767 ... zed-method

Вернуться в «JAVA»