Скажите, у меня есть следующий код:
private Integer number;
private final Object numberLock = new Object();
public int get(){
synchronized(number or numberLock){
return Integer.valueOf(number);
}
}
У меня такой вопрос, должны ли следующие версии метода add
иметь number
как энергозависимые в следующих случаях:
public void add(int num){
synchronized(number)
number = number + num;
}
public void add(int num){
synchronized(numberLock)
number = number + num;
}
Я понимаю, что это обе атомарные операции, но мой вопрос в том, является ли значение number
guarennteed выдаваемым в глобальную память и видимым для всех потоков без использования volatile?