volatile
Java でキーワードを使用する簡単な例が必要です。使用しないために一貫性のない動作をしvolatile
ます。
揮発性の使用法の理論的な部分は、私にはすでに明らかです。
まず第一に、変数が不揮発性であるため、キャッシュを公開する保証された方法はありません。あなたの JVM は常にあなたにとても親切で、すべての変数を揮発性として効果的に扱うかもしれません。
そうは言っても、スレッドが不揮発性変数の独自のバージョンをキャッシュする可能性を高める方法はいくつかあります。これは、私がテストしたほとんどのマシンで volatile の重要性を公開するプログラムです (ここからの適応バージョン):
class Test extends Thread {
boolean keepRunning = true;
public void run() {
while (keepRunning) {
}
System.out.println("Thread terminated.");
}
public static void main(String[] args) throws InterruptedException {
Test t = new Test();
t.start();
Thread.sleep(1000);
t.keepRunning = false;
System.out.println("keepRunning set to false.");
}
}
このプログラムは通常、出力するだけです
keepRunning set to false.
そして走り続ける。揮発keepRunning
性にすると印刷されます
keepRunning set to false.
Thread terminated.
終了します。