扎心了,老铁,程序出了小差,请重新再试
重新再试

首页> 软件设计> JAVA

详尽的JDK18ConcurrentHashMapput方法流程图

热门
详尽的JDK18ConcurrentHashMapput方法流程图
非常详尽的 JDK 1.8 ConcurrentHashMap put 方法流程图 {
size 添加 1,可能会引发扩容
addCount(),TreeBin,return null,循环遍历链表, 记录元素个数
binCount = 1 
,i = (tab.length - 1) & hash,table 为 null 或 table 的长度为 0 ?,是否在进行扩容操作
f.hash = MOVED, ,插到链表尾部,否,计算 key 的 hash 值,开始 💪,重新进入循环,binCount 是否等于 0 ?,是,帮助扩容
helpTransfer()
,尝试使用 CAS 直接在该位置插入新值,put(Key, Val),链表,否, 重新进入循环,fh < 0,fh >= 0,Node,用 synchronized 对 table[i] 加锁,链表转为红黑树,判断是链表还是红黑树
fh >= 0?
,链表元素个数 >= 8,return oldVal,决定是否替换元素,结束 😂,循环遍历数组 Table,oldVal 为 null ? ,NullPointerException,是 break,数组第 i 个位置为 null ?
i = (tab.length - 1) & hash,ConcurrentHashMap,put(K, V),初始化 table
initTable()
,Table,i,CAS 操作成功?,红黑树,遍历到的Key 与将要插入的Key相等?,解锁,否 binCount == 0,给数组第i个位置的节点加锁
synchronized (f)
,再次确认头结点是 否变化,调用红黑树的插入方法
putTreeVal
binCount = 2
,K 或 V 为 null ?}

文件简介

编号:104891

名称:详尽的JDK18ConcurrentHashMapput方法流程图

浏览数:213

收藏数:3

克隆数:0

作者:0

价格:5元

更新时间:2022-12-23 12:48:20

文件很好用,分享文件:

操作指导

只需一步极速注册

163,195+文件在线编辑

云端同步我的设计

一键高清无水印下载

微信扫码立即登录
二维码失效
请点击刷新

微信和QQ是两个独立账号,账号信息不互通

距离今天活动结束仅剩
000000000毫秒
距离今天活动结束仅剩
000000000毫秒
距离今天活动结束仅剩
000000000毫秒
会员促销今天活动仅剩
000000000毫秒
距离今天活动结束仅剩
000000000毫秒