Я видел несколько примеров. в java, где они выполняют синхронизацию блока кода, чтобы изменить некоторую переменную, в то время как эта переменная изначально была объявлена изменчивой. Я видел это в примере одноэлементного класса, где они объявили уникальный экземпляр как изменчивый, и они синхронизировали блок, который инициализирует этот экземпляр ... Мой вопрос: почему мы объявляем его изменчивым, пока мы синхронизируем его, почему нам нужно делать и то, и другое ?? разве одного из них недостаточно для другого??
public class someClass {
volatile static uniqueInstance = null;
public static someClass getInstance() {
if(uniqueInstance == null) {
synchronized(someClass.class) {
if(uniqueInstance == null) {
uniqueInstance = new someClass();
}
}
}
return uniqueInstance;
}
Заранее спасибо.