我一直在阅读Java generics and collection
这本书,在讨论iterator
的部分中,作者提到
依赖CAS(比较和交换)的集合具有弱一致的迭代器,该迭代器 反映一些但不一定所有的变化 自创建以来就一直支持他们的收藏。例如, 如果集合中的元素在修改之前已被修改或删除, 迭代器到达它们,它肯定会反映出这些变化,但是 没有这样的保证插入。弱一致性迭代器 也不要抛出ConcurrentModificationException。
我想知道为什么weakly consistent iterator
仅反映修改和删除更改,而不反映插入更改。定义这样的行为背后的原因是什么?它有什么用例?
答案 0 :(得分:2)
我认为这是不正确的。 弱一致性迭代的official definition是:
- 它们可以与其他操作同时进行
- 他们永远不会抛出
ConcurrentModificationException
- 保证它们遍历原先存在的元素一次,并且可能(但不保证)反映 施工后进行的任何修改。
删除和插入之间没有区别。