我什么时候应该使用 ConcurrentSkipListMap?排序、可导航和并发
2022-08-31 11:09:24
在Java中,有更好的解决方案。那么我应该什么时候使用?它是冗余吗?ConcurrentHashMap
multithreading
ConcurrentSkipListMap
这两者之间的多线程方面是否常见?
在Java中,有更好的解决方案。那么我应该什么时候使用?它是冗余吗?ConcurrentHashMap
multithreading
ConcurrentSkipListMap
这两者之间的多线程方面是否常见?
这两个类在几个方面有所不同。
ConcurrentHashMap 不保证*作为其协定的一部分其操作的运行时。它还允许调整某些负载因子(粗略地说,同时修改它的线程数)。
另一方面,ConcurrentSkipListMap保证了各种操作的平均O(log(n))性能。它也不支持为了并发而进行调整。 还有一些操作没有:ceilingEntry/Key,floorEntry/Key等。它还维护一个排序顺序,否则,如果您使用的是 .ConcurrentSkipListMap
ConcurrentHashMap
ConcurrentHashMap
基本上,为不同的用例提供了不同的实现。如果需要快速添加单键/值对和快速查找单键,请使用 .如果您需要更快的顺序遍历,并且能够负担得起额外的插入成本,请使用 .HashMap
SkipListMap
*虽然我预计该实现大致符合O(1)插入/查找的一般哈希映射保证;忽略重新散列
有关数据结构的定义,请参阅跳过列表。
ConcurrentSkipListMap
按其键的自然顺序(或您定义的其他键顺序)存储映射
。因此,它的 // 操作速度比 HashMap
慢,但为了抵消这一点,它支持 SortedMap
、NavigableMap
和 ConcurrentNavigableMap
接口。get
put
contains