gpt4 book ai didi

java - ConcurrentNavigableMap,弱一致性迭代器解读

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:53:53 25 4
gpt4 key购买 nike

JavaDoc for ConcurrentNavigableMap , 我对以下内容有点困惑:

The view's iterator is a "weakly consistent" iterator that will never throw ConcurrentModificationException, and guarantees to traverse elements as they existed upon construction of the iterator, and may (but is not guaranteed to) reflect any modifications subsequent to construction.

在像 ConcurrentSkipListMap 这样的接口(interface)实现中,措辞似乎是一样的。

这是什么意思,这似乎是矛盾的——要么它可以保证遍历元素在构建时存在的元素,要么它可能反射(reflect)构建后的修改?

更新:我基本上想知道在像 ConcurrentSkipListMap 这样的 ConcurrentNavigableMaps 上创建迭代器是否会创建 map 的“快照” View 。

最佳答案

为了回答我自己的问题,在并发兴趣邮件列表 here 上讨论了迭代器提供的一致性保证的强度。 .

ConcurrentHashMap 和 ConcurrentSkipListMap 的作者,Doug Lea,appears to agree保证根本不是什么保证,并且在 ConcurrentHashMap 的情况下,迭代器可以报告映射处于从未有过的状态实际上在。

对于那些好奇的人,ConcurrentSkipListMap 的来源,特别是其内部 Iter(迭代器)类是 here .

ConcurrentSkipListMap 中的迭代器迭代跳表中的常规节点,这些节点使用 volatile 引用链接。可能是这个有点令人困惑的 JavaDoc 语句实际上 [简单地] 指的是 happens-before 保证。也就是说,在创建迭代器之前由其他线程所做的更改将对驱动迭代的线程可见。

关于java - ConcurrentNavigableMap,弱一致性迭代器解读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8025104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com