什么时候应该使用ConcurrentSkipListMap?

DKSRathore:

在Java中,ConcurrentHashMap有更好的multithreading解决方案。那我ConcurrentSkipListMap什么时候应该使用这是多余的吗?

两者之间的多线程方面是否常见?

凯文·蒙特罗斯(Kevin Montrose):

这两个类在某些方面有所不同。

ConcurrentHashMap不保证*其合同约定的运行时间。它还允许调整某些负载因子(大约是同时修改它的线程数)。

另一方面,ConcurrentSkipListMap可确保各种操作的平均O(log(n))性能。它也不支持出于并发的考虑而进行调整。ConcurrentSkipListMap还具有许多ConcurrentHashMap不执行的操作:ceilingEntry / Key,floorEntry / Key等。它还维护排序顺序,如果使用,则必须计算(否则费用很高)ConcurrentHashMap

基本上,为不同的用例提供了不同的实现。如果您需要快速添加单键/值对和快速查找单键,请使用HashMap如果您需要更快的顺序遍历,并且可以承受额外的插入费用,请使用SkipListMap

*尽管我希望实现与O(1)插入/查找的一般哈希映射保证大致相符;忽略重新哈希

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章