jdk7 concurrenthashmap put流程
2021-07-02 09:28:53 0 举报
如标题所述
作者其他创作
大纲/内容
是
否
空指针异常
count++
在64次内拿到锁
根据key值查找在数组中的位置,确定该链的第一个节点first
1、创建新数组2、复用的形式转移键值对3、头插入方式添加新节点
count>阈值
jdk7 ConcurrentHashMap put流程
执行segment的put方法
挂起
value是否为空
放到指定位置
1、计算在segments[i]的tab数组中的位置2、找到所在的链的第一个节点first遍历该链
直接修改原值返回原值
根据segments[0]的规格创建segments[i]
1、根据key值计算hash的值2、计算在segment数组中的位置i
end
拿到锁
解锁
start
segment[i]是否为空
选中first节点位置改变
线程在排队的时候已做好准备工作
创建新节点,指向该链的第一个节点
扩容
将数据放置在该链的第一个节点
重试拿锁
first不为空
0 条评论
下一页
为你推荐
查看更多