Josh Bloch は、ダブル チェック イディオムでローカル変数を使用してパフォーマンスを向上させる可能性について言及しており (EJ、第 2 版、p284)、サンプル コードは、ローカル変数を使用しない場合と比較して、彼のマシンで約 25% 高速に実行されると述べています。問題は、なぜ速いのかということです。ローカル変数版の場合はインスタンス変数に3回アクセスし、通常の場合はインスタンス変数に4回アクセスします。これが「25%」の増加の背後にある理由ですか、それとも他の理由がありますか?
編集: 3 回または 4 回のアクセスは、インスタンスが最初に作成されたときのみです。その後、1~2回です。
EDIT2:この質問の受け入れられた回答を確認して、コード例を確認してください。これはJava 6用だと思います。Javaで「ダブルチェックロックが壊れています」宣言を解決するにはどうすればよいですか?