メインメモリ上の値を参照するvolatile
変数宣言時に volatile int i; というようにvolatileという修飾子をつけて宣言することができます。

javaでは、必ずしもメインメモリ上の値を見るわけではなく、メインメモリ上の値を、スレッドのキャッシュエリアにコピーしてその値を使用する場合があります。
しかしこれではメインメモリを見たスレッドと、スレッドのキャッシュエリアのコピーを使用して、値を変更した場合、メインメモリ上で値が一致しなくなってしまいます。
このような矛盾がおきないように、スレッドが参照する変数に volatile 修飾子をつけることにより、 必ずメインメモリ上を見に行く ようになります。

メインメモリ上の値を参照するvolatile
メインメモリ上の値を参照するvolatile

Back to top

Information