HashMap-1.7--循环链表的产生原因
2020-09-11 14:04:42 0 举报
jdk1.7,HashMap死循环示意图
作者其他创作
大纲/内容
newTable[i] = c;
线程2执行了三次while循环以后的链表
d
null
a.next = newTable[i];
next1
newTable[i] = e1
e2
newTable[i] = a;
a.next
b.next
b
线程2
d.next
newTable[i] = b;
a
newTable[i]
线程1
第三次循环
newTable[i] = e2
c.next = newTable[i];
e1
需要注意的是:此时e1指向的是a元素,next1指向的是b元素。但是,经过e2线程的修改,此时a.next已经不在指向b元素了,而是指向了null。同理,b.next也不再指向c元素了,而是指向了a元素。
c
c.next
尚未移动的链表
此时线程e1重新夺回cpu执行时间,继续执行代码
b.next = newTable[i];
第一次循环
next2
第二次循环
0 条评论
回复 删除
下一页