ConcurrentHashMap底层实现#yyds干货盘点#

须知少年凌云志,曾许人间第一流。这篇文章主要讲述ConcurrentHashMap底层实现#yyds干货盘点#相关的知识,希望能为你提供帮助。
ConcurrentHashMap

ConcurrentHashMap底层实现#yyds干货盘点#

文章图片

ConcurrentHashMap底层实现#yyds干货盘点#

文章图片

ConcurrentHashMap : put方法的逻辑
1.判断Node[]数组是否初始化,没有则进行初始化操作
2.通过hash定位数组的索引坐标,是否有Node节点,如果没有则使
用CAS进行添加(链表的头节点),添加失败则进入下次循环。
3.检查到内部正在扩容,就帮助它一块扩容。
4.如果头节点f!=null,则使用synchronized锁住f元素(链表/红黑二叉树的
头元素)
4.1如果是Node(链表结构)则执行链表的添加操作。
4.2如果是TreeNode(树型结构)则执行树添加操作。
5.判断链表长度已经达到临界值8,当然这个8是默认值,大家也可以去做调整,当节点数超过这个值就需要把链表转换为树结构。
【ConcurrentHashMap底层实现#yyds干货盘点#】ConcurrentHashMap总结∶比起Segment,锁拆得更细
ConcurrentHashMap:别的需要注意的点
HashMap线程不安全,数组+链表+红黑树
Hashtable线程安全,锁住整个对象,数组+链表
ConccurentHashMap线程安全,CAS+同步锁,数组+链表+红黑树HashMap的key、value均可为null,而其他的两个类不支持

    推荐阅读