在Java中,ConcurrentHashMap
有更好的multithreading
解决方案。那我ConcurrentSkipListMap
什么时候应该使用?这是多余的吗?
两者之间的多线程方面是否常见?
这两个类在某些方面有所不同。
ConcurrentHashMap不保证*其合同约定的运行时间。它还允许调整某些负载因子(大约是同时修改它的线程数)。
另一方面,ConcurrentSkipListMap可确保各种操作的平均O(log(n))性能。它也不支持出于并发的考虑而进行调整。ConcurrentSkipListMap
还具有许多ConcurrentHashMap
不执行的操作:ceilingEntry / Key,floorEntry / Key等。它还维护排序顺序,如果使用,则必须计算(否则费用很高)ConcurrentHashMap
。
基本上,为不同的用例提供了不同的实现。如果您需要快速添加单键/值对和快速查找单键,请使用HashMap
。如果您需要更快的顺序遍历,并且可以承受额外的插入费用,请使用SkipListMap
。
*尽管我希望实现与O(1)插入/查找的一般哈希映射保证大致相符;忽略重新哈希
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句