1. volatile は正確に何をしますか?
(volatile は秩序性と可視性を保証しますが、原子性は保証できません)
(ビデオ チュートリアルをお勧めします :java ビデオ チュートリアル)
1. 命令の再配置は禁止されています
2. 異なるスレッドがこの変数を操作するとき、つまり 1 つのスレッドが変数を変更するとき、可視性が保証されます。特定の変数値が設定されると、新しい値は他のスレッドにすぐに表示されます
3. アトミック性は保証されません (スレッドが安全ではありません)
2. synchronized キーワードと volatile キーワードの比較
volatile キーワードはスレッド同期の軽量実装であるため、volatile のパフォーマンスは synchronized キーワードよりも明らかに優れています。ただし、volatile キーワードは変数にのみ使用でき、synchronized キーワードはメソッドとコード ブロックを変更できます。
(より関連したインタビューの質問に関する推奨事項:java インタビューの質問と回答)
同期キーワードは、主にロックの取得と解放を減らすために、JavaSE1.6 以降に導入されました。ロックによるパフォーマンスの消費により、バイアスされたロック、軽量ロック、その他のさまざまな最適化の導入により、実行効率が大幅に向上しましたが、実際の開発では synchronized キーワードが使用されるシナリオがさらに増えています。
volatile キーワードへのマルチスレッド アクセスはブロックされませんが、synchronized キーワードはブロックされる可能性があります。
volatile キーワードはデータの可視性を保証できますが、データのアトミック性は保証できません。 synchronized キーワードは両方を保証できます (synchronized は、原子性、順序性、可視性という 3 つの主要なプロパティを保証します)。
volatile キーワードは主に複数のスレッド間の変数の可視性を解決するために使用され、synchronized キーワードは複数のスレッド間のリソースへのアクセスの同期を解決します。
関連する推奨事項:Java の使用を開始する
以上がJava エンジニアのインタビュー - 不安定なキーワードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。