图文说明1.7的HashMap在多线程并发扩容时导致的链表死循环问题。
以下内容为看完相关视频讲解后自行整理,如有不当之处敬请大家指正。
两个变量:
e表示接下来需要转移的节点
next表示e的下一个节点
在每次转移一个节点后,e = next,next = next.next,即二者都沿着节点指针移动一个位置。
为了方便与节点的next指针区分,用e1和next1表示线程1中的这两个变量。
0. 初始状态:
h.next = a
a.next = b
b.next = null