BohYoh.comトップページへ  volatileフィールド(volatile field) 
Java講座 用語集   索引へ戻る   Java講座のページ


volatileフィールド(volatile field)



 整合性をたもちつつスレッド間で共有できるフィールドのこと。
 以下に示すのが、volatileフィールドの利用例である。

class Test { static volatile int i = 0, j = 0; static void func1() { i++; j++; } static void func2() { System.out.println("i=" + i + " j=" + j); } }

 この例では、メソッドfunc1eとメソッドfunc2は、並行的に実行できるだけでなく、iとjに対する共有変数へのアクセスは、各スレッドによるプログラムテキストの実行中に出現するものと、正確に同じ回数で同じ順序で行われることが保証される。メソッドfunc2が、iの値より大きな値のjに出会うことはない。というのにも、iに対するそれぞれの更新は、jへの更新が発生する前に、iの共有変数に反映されなければならないからである。ただし、メソッドfunc2のある呼出しが、iの値より大きな値のjに出会うことはある。その理由は、メソッドfunc2が、iの値を取得する瞬間およびjの値を取得する瞬間に、メソッドfunc1が、何回か実行されている可能性があるからである。
 なお、final変数をvolatile宣言すると、コンパイル時エラーが発生する。


索引へ戻る

BohYoh.comトップページへ