- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近在探索 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/
我是一名优秀的程序员,十分优秀!