ConcurrentHashMap1.8
2023-03-23 09:10:52 24 举报
ConcurrentHashMap1.8
作者其他创作
大纲/内容
结束
是否需要扩容
初始化数组
synchronize锁住table[i]
计算hash
否
超过8个后会转换为红黑树
协助扩容
准备开始put
Node
是否在扩容
put逻辑
是
false
true
(key == null || value == null)
成功
数组+链表+红黑树+synchronize
判断table[i]是否是链表头节点
计算插入数组的位置 i
是否需要树化
扩容逻辑
添加到红黑树中
CAS设置到table[i]位置上
......
树化逻辑
table[i]是红黑树节点
数组table==null或table.length==0
失败
table[i]==null
遍历链表,找到相同的就替换,否则采用尾插法添加节点
0 条评论
下一页