Java 有没有比ConcurrentHashMap性能更好的并发映射?

Java 有没有比ConcurrentHashMap性能更好的并发映射?,java,concurrency,map,concurrenthashmap,Java,Concurrency,Map,Concurrenthashmap,我知道,ConcurrentHashMap将备份表实现为多段数组,而不是单个数组,以提高并发访问性能。java中是否有其他Map实现在并发环境中的性能比ConcurrentHashMap更好 A比ConcurrentHashMap更能容忍极高的卷变化,但其摊销查找时间是O(log(n))而不是O(1) 因此,与所有数据结构一样,“最佳性能”取决于您的使用模式和“性能”的定义。A比ConcurrentHashMap更能容忍极高的容量变化,但其摊销查找时间是O(log(n))而不是O(1) 因此,与

我知道,
ConcurrentHashMap
将备份表实现为多段数组,而不是单个数组,以提高并发访问性能。java中是否有其他
Map
实现在并发环境中的性能比
ConcurrentHashMap
更好

A比ConcurrentHashMap更能容忍极高的卷变化,但其摊销查找时间是O(log(n))而不是O(1)

因此,与所有数据结构一样,“最佳性能”取决于您的使用模式和“性能”的定义。

A比ConcurrentHashMap更能容忍极高的容量变化,但其摊销查找时间是O(log(n))而不是O(1)


因此,与所有数据结构一样,“最佳性能”取决于您的使用模式和“性能”的定义。

您有理由相信
ConcurrentHashMap
是性能问题的根源吗?是否有分析器向您说明了这是一个问题?还请注意,自Java首次引入以来,每个版本的性能都有所提高。我想我已经读到CHM的Java 8性能比Java 7好(现在找不到参考)。你需要一个反映你的使用模式的基准来确定你是否有理由相信
ConcurrentHashMap
是你性能问题的根源?是否有分析器向您说明了这是一个问题?还请注意,自Java首次引入以来,每个版本的性能都有所提高。我想我已经读到CHM的Java 8性能比Java 7好(现在找不到参考)。你需要一个反映你的使用模式的基准来确定你是否有理由相信ConcurrentSkipListMap比CHM有更好的映射性能?没有提供“映射性能”的定义,因此,正如我在第二句话中指出的那样,这是不可能说的。在任何情况下,跳过列表在每个指标上都不是严格的次品,因此OP可能会更好,是的。我只是问你是否知道在
ConcurrentSkipListMap
上的任何操作都比CHM快?如果改变映射的线程数大大超过CHM的并发级别,预计跳过列表将排在前面。(或者如果它的使用方式和hashCode的实现方式只是引起了对同一段的大量争论)CHM中的读卡器,虽然它们也不会“正常”锁定,但事实上,如果它搅动得太快以至于无法获得干净的读取,它们会锁定该段。在skiplist中,他们只会阻塞他们想要的内容,而不是整个片段。增加并发级别不是免费的,会占用更多内存,影响批量操作。例如,
containsValue
方法在查找值时可能会被迫争夺每个单独段的锁,如果存在压倒性的写入频率。您有理由相信ConcurrentSkipListMap与CHM相比具有更好的映射性能吗?没有提供“映射性能”的定义,因此无法确定,正如我在第二句中指出的那样。在任何情况下,跳过列表在每个指标上都不是严格的次品,因此OP可能会更好,是的。我只是问你是否知道在
ConcurrentSkipListMap
上的任何操作都比CHM快?如果改变映射的线程数大大超过CHM的并发级别,预计跳过列表将排在前面。(或者如果它的使用方式和hashCode的实现方式只是引起了对同一段的大量争论)CHM中的读卡器,虽然它们也不会“正常”锁定,但事实上,如果它搅动得太快以至于无法获得干净的读取,它们会锁定该段。在skiplist中,他们只会阻塞他们想要的内容,而不是整个片段。增加并发级别不是免费的,会占用更多内存,影响批量操作。例如,
containsValue
方法可能会被迫争夺每个单独段的锁,因为它通过这些段查找值,如果写入频率过高。