HashMap扩大死循环问题源码分析问题(jdk1.7)
一、首先hashmap单线程正常扩容
每个数组依次遍历每个数组的链表,根据头插法从原来的1、2、3 变为了3,2,1
二、hashmap多线程扩展死循环问题
两个线程 e1 ,e2 此时 线程首先执行,但线程二的方向发生了变化,改为线程变换后的具体存储;初始e2指向0号位1,但线程一变换指向2号位1,next也发生改变
线程二开始在线程一的基本存储,
当next2指向空时 。e.next=newTable[i],重新指回2,形成循环链表;
学习自:https://www.bilibili.com/video/BV1z54y1i73r