[英]fail safe iterator in ConcurrentHashMap
CopyOnWriteArrayList
和ConcurrentHashMap
中的迭代器都是故障安全的,不會拋出CME。
IN CopyOnWriteArrayList<E>
迭代器建立在原始基礎數組的快照上。 因此,這里的迭代器是故障安全的 ,也是線程安全的。
用於CopyOnWriteArrayList<E>
Javadcos清楚地說明了術語快照 。
“快照”樣式的迭代器方法在創建迭代器時使用對數組狀態的引用。 此數組在迭代器的生命周期內永不更改,因此不可能發生干擾,並且保證迭代器不會引發ConcurrentModificationException。
在ConcurrentHashMap
迭代器的情況下,是否也建立在原始基礎地圖的快照上?
謝謝...
不一定-cf javadoc(強調我的) :
類似地,迭代器和枚舉返回的元素反映了在創建迭代器/枚舉時或之后的某個時刻哈希表的狀態。
如果查看values
, entrySet
和keySet
方法:
視圖的迭代器保證遍歷迭代器構造時存在的元素,並且可以(但不保證)反映構造之后的任何修改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.