CopyOnWriteArrayList
との両方の反復子 ConcurrentHashMap
はフェイルセーフであり、CME をスローしません。
INCopyOnWriteArrayList<E>
イテレータは、元の基になる配列のスナップショットに基づいて構築されています。したがって、ここのイテレータはフェイルセーフであり、スレッドセーフでもあります。
Javadcos は、スナップショットCopyOnWriteArrayList<E>
という用語を明確に述べています。
「スナップショット」スタイルの反復子メソッドは、反復子が作成された時点での配列の状態への参照を使用します。この配列は反復子の有効期間中に変更されることはないため、干渉は不可能であり、反復子は ConcurrentModificationException をスローしないことが保証されています。
元の基になるマップのスナップショットConcurrentHashMap
にも基づいて構築されたイテレータの場合は?
ありがとう...