为什么没有并发树图?[已关闭]

2022-09-01 02:37:56

我有几个与软件包相关的问题:java.util.concurrent

  1. 为什么在java API中,一侧是非并发的TreeMap,另一侧是并发的ConcurrentSkipListMap

  2. 他们为什么不叫它?是否可以肯定地说 a 包含 ?ConcurrentTreeMapSkipListMapTreeMap

例如,非并发已获得其并发对应项。为什么它没有发生在 ?HashMapConcurrentHashMapTreeMap


答案 1

为什么一边是非并发树状图,另一边是 ConcurrentSkipListMap?

我怀疑这样做是因为使树结构并发太难或遭受锁定性能问题。就有序集合而言,SkipLists是非常简单的数据结构,并提供与树类似的行为和性能,因此ConcurrentSkipListMap(和)可能更容易并发。Set

实际上,我更失望的是,我自己没有一个非并发的SkipList集合。

可以肯定地说SkipListMap包含TreeMap吗?

不。可以肯定地说,SkipList在有序的项目集合方面提供了类似的功能,这些集合提供了查找,插入,删除等性能。至少它给出了该性能的概率近似值。O(logN)

这是一个关于跳过列表的好页面。它们是非常酷的数据结构。我只能希望在现代编程数据结构类中教授。


答案 2

该类之所以以这种方式命名,是因为它是使用平衡的搜索树实现的。之所以这样称呼,是因为它是使用跳过列表实现的。为什么没有 的并发版本 ?可能是因为很难创建一个扩展到高并发级别的树结构;并发跳过列表更容易正确实现。TreeMapConcurrentSkipListMapTreeMap


推荐