ConcurrentHashMap
in Java は、更新と同時に続行する読み取りを提供します。これのトレードオフは、読み取りの結果が、読み取りが開始されたときに最後に完了した更新のみを反映するように制限されているため、要素の最新の状態を反映するように指定されていないことです。
ただし、AFAIK Java Memory Model では、読み取りスレッドと書き込みスレッド間の何らかの形式の同期がないと、書き込みスレッドの更新が、任意の時間が経過しても読み取りスレッドに表示されない場合があります。
読み取りスレッドが書き込みスレッドでブロックされない場合、最後に完了した更新の可視性を読み取りスレッドが利用できることを保証する根拠は何ですか?
実行中のコンペア アンド スワップ アルゴリズムの行で何かを考えることができましたが、そのライブラリのソース コードでそれを確認することはできませんでした。