説明
1. プログラムが揮発性変数に対して読み取り操作または書き込み操作を実行する場合、前の操作に対するすべての変更を行う必要があります。後者の操作は確認済みですが、後者の操作はまだ実行されていません。
2. 命令を最適化する場合、volatile 変数アクセスの文を最後に置くことはできませんし、volatile 変数アクセスの文を先頭に置くこともできません。
一般変数は、メソッドが実行中の認可結果に依存するすべての場所で正しい結果を取得できることを保証することしかできませんが、その順序がプログラム コードの実行順序と一致していることは保証できません。
例
volatile boolean initialized = false; // 下面代码线程A中执行 // 读取配置信息,当读取完成后将initialized设置为true以通知其他线程配置可用 doSomethingReadConfg(); initialized = true; // 下面代码线程B中执行 // 等待initialized 为true,代表线程A已经把配置信息初始化完成 while (!initialized) { sleep(); } // 使用线程A初始化好的配置信息 doSomethingWithConfig();
Java のコレクションは主に 4 つのカテゴリに分類されます:
1 、リスト リスト: 順序付き、繰り返し可能;
2、キュー キュー: 順序付き、繰り返し可能;
3、セット コレクション: 繰り返し不可;
4、マップ マッピング: 順序なし、一意のキー、一意でない値。
以上がJava における volatile 変数の機能は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。