我目前正在运行一个高度并发的基准测试,它ConcurrentSkipList
从 Java 集合中访问 a 。我发现线程在该方法中被阻塞,更准确地说是:
java.util.concurrent.ConcurrentSkipListMap.doGet(ConcurrentSkipListMap.java:828)
java.util.concurrent.ConcurrentSkipListMap.get(ConcurrentSkipListMap.java:1626)
(这是通过在 10 秒的时间间隔内打印每个单独线程的堆栈跟踪来获得的)。几分钟后仍未解决此问题
这是集合的预期行为吗?哪些并发的其他集合可能会遇到阻塞?
经过测试,我表现出与ConcurrentHashMap
s 类似的行为:
java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:994)