あなたがこのコードを持っているとしましょう:
private Object lockObject = new Object();
private Integer myValue = new Integer(0);
public void update(){
synchronized(lockObject){
System.out.println(myValue);
myValue++;
}
}
現在、myValue
はsynchronized
オンでもマークもされていませんvolatile
。ただし、それを変更する唯一の方法は、update()
メソッドを使用することです。コアJava同時実行性に関するDZoneのrefcardは、同期化されたブロック内のフィールドへの更新がすべてのスレッドによって認識されることを示しています。これが同期化されたオブジェクトのみ(lockObject)を意味するのか、それとも任意のフィールド(myValueなど)を意味するのかわかりませんでした。
誰かがこれについて詳しく説明できますか?ありがとう!