jdk 1.7 hashmap put 流程图
2020-05-11 14:09:26 0 举报
hashmap jdk1.7
作者其他创作
大纲/内容
7
1
是
3
putForNullKey
next
0
loop
newTable[i] = e
if (table == EMPTY_TABLE) inflateTable(threshold);
否
2
jdk7hashmap成环
1、根据key值计算hash值2、计算在当前数组中的位置
正常resize()
5
A线程完成到这,被挂起了
e
设置阈值,并创建数组
hash重新确定插入位置
插入到链表头部
g否
size++
添加新值
这是正常情况下的结果
数据是否为空
key == null
resize()transfer()扩容并遍历旧表,复制到新表
hashmap1.7循环链表举例
e.next = newTable[i]
end
判断是否当前是否需要扩容
B线程开始,然后完成所有操作,形成如下结果,正如正常情况下,退出后,由于线程B已经执行完毕,根据Java内存模型,现在newTable和table中的Entry都是主存中最新值:7.next=3,3.next=null。
此时有两个线程分别为A、B
替换原来的值,并返回原来的值
此时A线程相当于
0 条评论
回复 删除
下一页