Java における volatile キーワードの役割と使用シナリオを調べる
Java では、変数の可視性、スレッド同期、メモリの可視性を制御するためにキーワードをよく使用します。他の問題もあり、キーワードの 1 つは不安定です。 volatile キーワードは、変更された変数の可視性と順序付けを保証でき、その機能は命令の並べ替えを防止し、変数に対するスレッド操作のアトミック性を確保することです。
1. volatile キーワードの役割
2. volatile キーワードの使用シナリオ
サンプル コードは次のとおりです。
public class VolatileExample { private volatile boolean flag = false; public void setFlag() { flag = true; } public void doSomething() { while (!flag) { // do something } System.out.println("Flag has been set to true"); } public static void main(String[] args) { VolatileExample example = new VolatileExample(); new Thread(() -> example.setFlag()).start(); new Thread(() -> example.doSomething()).start(); } }
上記のコードを実行すると、スレッド B は、スレッド A がフラグ flag を true に設定するまでループで待機してから続行します。
サンプル コードは次のとおりです。
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; } }
上記のコードでは、インスタンス変数の変更に volatile キーワードが使用されていない場合、スレッド A の実行後に同期 (シングルトン) が行われます。 .class)の場合、スレッドBはnull判定により初期化されていないインスタンスを直接取得する可能性があります。
概要:
volatile キーワードは Java のスレッド同期メカニズムであり、命令の並べ替えを禁止しながら変数の可視性と順序性を確保するために使用されます。主な使用シナリオには、ステータス フラグと二重チェック ロック モードが含まれます。 volatile キーワードを使用する場合は、変数の合理的な使用を確保し、不必要な同期や競合を避けるように注意して、プログラムの効率とパフォーマンスを向上させる必要があります。
以上がJava における volatile キーワードの役割と適用条件を分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。