美文网首页
ConcurrentHashMap总结

ConcurrentHashMap总结

作者: You_Master | 来源:发表于2020-10-25 17:13 被阅读0次

其实可以看出JDK1.8版本的ConcurrentHashMap的数据结构已经接近HashMap,相对而言,ConcurrentHashMap只是增加了同步的操作来控制并发,从JDK1.7版本的ReentrantLock+Segment+HashEntry,到JDK1.8版本中synchronized+CAS+HashEntry+红黑树。

1.数据结构:取消了Segment分段锁的数据结构,取而代之的是数组+链表+红黑树的结构。

2.保证线程安全机制:JDK1.7采用segment的分段锁机制实现线程安全,其中segment继承自ReentrantLock。JDK1.8采用CAS+Synchronized保证线程安全。

3.锁的粒度:原来是对需要进行数据操作的Segment加锁,现调整为对每个数组元素加锁(Node)。

4.链表转化为红黑树:定位结点的hash算法简化会带来弊端,Hash冲突加剧,因此在链表节点数量大于8时,会将链表转化为红黑树进行存储。

5.查询时间复杂度:从原来的遍历链表O(n),变成遍历红黑树O(logN)。

相关文章

  • ConcurrentHashMap-JDK1.7版

    分析一下ConcurrentHashMap的成员变量: 总结:ConcurrentHashMap中包含一个segm...

  • ConcurrentHashMap总结

    其实可以看出JDK1.8版本的ConcurrentHashMap的数据结构已经接近HashMap,相对而言,Con...

  • ConcurrentHashMap总结

    1. 总结:如何保证线程线程安全 CAS操作数据:table数组的取值/设置值、链表的数值操作、sizeCtl修改...

  • ConcurrentHashMap 1.7总结

    一、通过Key找到在Segment[]数组中的位置: 1. 变量定义: ssize: 不小于concurrency...

  • ConcurrentHashMap的总结

    HashMap的创建 指定参数时: 不指定参数时: 数组的初始化发生在initTable()中。 元素访问操作 插...

  • ConcurrentHashMap详细总结

    上文详细介绍了HashMap的内容,但是由于HashMap不是线程安全的,因此使用起来会存在一定的风险。本文主要介...

  • ConcurrentHashMap并发总结

    ConcurrentHashMap(以下称为CHM)各版本JDK 5:分段锁,必要时加锁。通过Segment来分段...

  • 简单总结ConcurrentHashMap

    在并发使用到HashMap的时候,往往不建议直接用HashMap,因为HashMap在并发写数据的时候容易因为re...

  • ConcurrentHashMap源码阅读小结

    putVal 方法总结 说起 ConcurrentHashMap ,当然从入口开始说。该方法要点如下: 1. 不允...

  • ConcurrentHashMap源码分析(JDK8)

    导入 ConcurrentHashMap是HashMap的线程安全版本的实现版本,关于HashMap的分析总结,可...

网友评论

      本文标题:ConcurrentHashMap总结

      本文链接:https://www.haomeiwen.com/subject/ztdnmktx.html