gpt4 book ai didi

java - ConcurrentSkipListMap put 方法是线程安全的吗?

转载 作者:行者123 更新时间:2023-12-01 18:17:11 24 4
gpt4 key购买 nike

最近在探索 ConcurrentSkipListMap 时,我浏览了它的实现,发现它的 put 方法不是线程安全的。它在内部调用 doPut 来实际添加项目。但我发现这个方法并没有使用任何类似于ConcurrentHashMap的锁。

因此,我想知道add是否是线程安全的。从这个方法来看,它似乎不是线程安全的——也就是说,如果这个方法同时被两个线程执行,那么可能会出现问题。

我知道ConcurrentSkipListMap内部使用skiplist数据结构,但我期望add方法是线程安全的。我理解有什么问题吗? ConcurrentSkipListMap 真的不是线程安全的吗?

最佳答案

仅仅因为它不使用Lock并不意味着它的线程不安全。 Skip list可以实现结构lock free .

您应该阅读API仔细。

... Insertion, removal, update, and access operations safely execute concurrently by multiple threads. Iterators are weakly consistent, returning elements reflecting the state of the map at some point at or since the creation of the iterator. They do not throw ConcurrentModificationException, and may proceed concurrently with other operations. ...

关于java - ConcurrentSkipListMap put 方法是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28898205/

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