Say I have the following code:
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
の値がグローバルメモリにプッシュアウトされ、volatileを使用せずにすべてのスレッドに表示されることです。