0

Java: 値が異なるスレッドによって非常に頻繁に変更される (オブジェクト型の) 共有変数があります。他のスレッドのセットによって他のメソッドからこの変数の値にアクセスすると、破損した値 (まったく割り当てられていない値) が得られますか? 参照スワッピング時に変数にアクセスすると何か問題が発生しますか???

// this method will be called very frequently
public void changeValue(Object value)
{
    this.value = value;
}

// will this method call return an invalid memory reference ?
public Object getValue()
{
    return value;
}
4

6 に答える 6

4

変数への新しいオブジェクトの割り当てはアトミック操作ですが、参照を揮発性にしないか、この参照へのアクセスを同期しないか、AtomicReference を使用しないと、可視性の問題が発生し、古い値が表示されます。

于 2012-09-26T13:28:18.093 に答える
0

値を揮発性として宣言するか、アクセスメソッドを同期として宣言した場合、問題が発生します。

于 2012-09-26T13:31:01.907 に答える