[英]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.