Javaのvolatile文について質問があります。Java:クラスをスレッドセーフにするのに十分な揮発性?
class Master {
// Foo is a class with thread-safe methods
public volatile Foo foo;
}
class Worker1 implements Runnable {
protected Master master
void run() { ... };
}
class Worker2 implements Runnable {
protected Master master
void run() { ... };
}
これは、同時に実行されるクラスのクラスのオブジェクトへの参照を保持する2つのワーカースレッドを持っています。作業中は、どちらもmaster.fooのメソッドにアクセスする必要があります。ある時点で、マスタのFooオブジェクトはワーカースレッドの1つによって変更されます。今私の質問:揮発性の使用は全体のスレッドを安全にしますか?
- 読み込みと書き込みが参照変数のアトミックです[...]
しかし、アトミックで指定できるアクションがあると言うので、私はこれを求めています
アトミックアクションはインターリーブできないため、スレッドの干渉を恐れずに使用できます。
私はこれを正しく理解していることを確認したいと思います。事前に
感謝:)
「変更されました」とはどういう意味ですか? 1. 'Foo'の新しいインスタンスが作成されます。2.' Foo'の状態は変更されますか? – home
不明確な文をお詫び申し上げます。これは、オブジェクト自体ではなく、参照を変更することです。 – tbolender