繁体   English   中英

ConcurrentHashMap中的失败安全迭代器

[英]fail safe iterator in ConcurrentHashMap

CopyOnWriteArrayListConcurrentHashMap中的迭代器都是故障安全的,不会抛出CME。

IN CopyOnWriteArrayList<E>迭代器建立在原始基础数组的快照上。 因此,这里的迭代器是故障安全的 ,也是线程安全的。

用于CopyOnWriteArrayList<E> Javadcos清楚地说明了术语快照

“快照”样式的迭代器方法在创建迭代器时使用对数组状态的引用。 此数组在迭代器的生命周期内永不更改,因此不可能发生干扰,并且保证迭代器不会引发ConcurrentModificationException。

ConcurrentHashMap迭代器的情况下,是否也建立在原始基础地图的快照上?

谢谢...

不一定-cf javadoc(强调我的)

类似地,迭代器和枚举返回的元素反映了在创建迭代器/枚举时或之后的某个时刻哈希表的状态。

如果查看valuesentrySetkeySet方法:

视图的迭代器保证遍历迭代器构造时存在的元素,并且可以(但不保证)反映构造之后的任何修改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM