ConcurrentHashMap,在JDK8中改进了并发功能

任何并发专家都可以在ConcurrentHashMap中进行解释,与以前的JDK相比,这些并发功能得到了改进


那么, ConcurrentHashMap已被完全重写。 在Java 8之前,每个ConcurrentHashMap都有一个在建造时固定的“并发级别”。 出于兼容性原因,仍然有一个构造函数接受这样的级别,尽管没有以原始方式使用它。 该映射被分割为多个段,因为它的并发级别每个都有自己的锁,所以理论上可能会有并发级并发更新,如果它们都发生针对不同的段,这取决于哈希。

在Java 8中,每个散列桶都可以单独更新,因此只要不存在散列冲突,就可以有多少并发更新作为其当前容量。 这符合保证原子更新的compute方法等新功能,因此至少锁定了被更新的哈希桶。 在最好的情况下,他们确实只锁定那一个桶。

此外, ConcurrentHashMap受益于应用于所有类型散列映射的一般散列改进。 当某个存储桶存在散列冲突时,实现将使用该存储桶内的结构类似结构的排序映射,从而在搜索时降级为O(log(n))复杂性而不是旧实现的O(n)复杂性水桶。


我认为与JDK7相比有几个变化:

  • 延迟初始化:在JDK8中,仅当某个实体添加到映射中时才会分配用于每个段的内存。 在JDK7中,这是在创建地图时完成的。
  • JDK8中增加了一些新功能,如forEach,reduce,search等。
  • 内部结构变化:在jdk8中使用TreeBin(红黑树)来提高搜索效率。
  • 链接地址: http://www.djcxy.com/p/91897.html

    上一篇: ConcurrentHashMap, which concurrent features improved in JDK8

    下一篇: JDK8: Getting back the JDK7 look for javadoc