Double-checked locking and the Singleton patternの記事を読んでいて、二重チェックのロックがどのように壊れているか、およびスタック オーバーフローに関するいくつかの関連する質問を読んでいました。
このパターン/イディオムを何回も問題なく使用しました。私は Java 5 を使用して以来、これが Java 5 メモリー・モデルで修正されたのではないかと最初に考えました。ただし、記事には次のように書かれています。
この記事では、Java 5.0 用に改訂される前の Java メモリ モデルについて言及しています。メモリの順序付けに関するステートメントは、もはや正しくない可能性があります。ただし、ダブルチェック ロックのイディオムは、新しいメモリ モデルではまだ壊れています。
これは本当の問題ですか? もしそうなら、どのような状況下で?