代码之家  ›  专栏  ›  技术社区  ›  Thor

为什么“弱一致迭代器”只反映修改和删除更改,而不反映插入更改

  •  2
  • Thor  · 技术社区  · 8 年前

    我一直在读这本书 Java generics and collection 在一节讨论 iterator ,作者提到

    依赖CA(比较和交换)的集合具有弱一致的迭代器,它 反映一些但不一定是所有的变化 自创建以来一直用于备份集合。例如, 如果集合中的元素在 迭代器到达它们,它肯定会反映这些变化,但是 不保证插入。弱一致迭代器 也不要抛出ConcurrentModificationException。

    我在想,为什么 weakly consistent iterator 只反映修改和删除更改,但不反映插入更改。定义这种行为的原因是什么?它提供什么用例?

    1 回复  |  直到 8 年前
        1
  •  2
  •   shmosel    8 年前

    我觉得不对。这个 official definition 属于 弱一致的 迭代是:

    • 可以同时进行其他作业。
    • 他们永远不会扔 ConcurrentModificationException
    • 它们保证在施工过程中,能够准确地穿过构件,并且可以(但不保证)反映 施工后的任何修改。

    移除和插入之间没有区别。