volatile
Javaでは、キーワードが変数の可視性を提供することを理解しています。問題は、変数が可変オブジェクトへの参照である場合、volatile
そのオブジェクト内のメンバーにも可視性を提供するかどうかです。
volatile Mutable m
以下の例では、複数のスレッドがアクセスして変更している場合、正しく機能しvalue
ますか?
例
class Mutable {
private int value;
public int get()
{
return a;
}
public int set(int value)
{
this.value = value;
}
}
class Test {
public volatile Mutable m;
}