Java における volatile キーワードの役割と適用シナリオの詳細な説明
1. volatile キーワードの役割
Java では、volatile キーワードは次のとおりです。変数を識別するために使用されます。変数は複数のスレッドにわたって可視です。つまり、可視性が保証されています。具体的には、変数が volatile と宣言されると、その変数への変更は他のスレッドに即座に知られます。
2. volatile キーワードのアプリケーション シナリオ
public class FlagThread { private volatile boolean running = true; public void setRunning(boolean running) { this.running = running; } public void run() { while (running) { // 执行任务 } // 停止执行 } public static void main(String[] args) { FlagThread thread = new FlagThread(); thread.start(); // 模拟运行一段时间后停止执行 try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } thread.setRunning(false); } }
上記のコードでは、FlagThread クラスの実行変数は volatile として宣言されています。メインスレッドが running を false に設定すると、FlagThread スレッドは直ちにそれを感知し、実行を停止します。
public class Singleton { private volatile static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } }
public class SharedData { private volatile int data; public int getData() { return data; } public void setData(int data) { this.data = data; } } public class Producer implements Runnable { private SharedData sharedData; public Producer(SharedData sharedData) { this.sharedData = sharedData; } @Override public void run() { int value = 0; while (true) { sharedData.setData(value); value++; } } } public class Consumer implements Runnable { private SharedData sharedData; public Consumer(SharedData sharedData) { this.sharedData = sharedData; } @Override public void run() { while (true) { int value = sharedData.getData(); System.out.println(value); } } } public class Main { public static void main(String[] args) { SharedData sharedData = new SharedData(); Thread producerThread = new Thread(new Producer(sharedData)); Thread consumerThread = new Thread(new Consumer(sharedData)); producerThread.start(); consumerThread.start(); } }
3. 概要
以上がJavaのvolatileキーワードの使用シナリオと機能の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。