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