JDK1.7 扩容死锁问题 菜鸟圈在编人员 2022-03-16 171 阅读1分钟 程序中有两个线程对hashmap进行扩容 扩容前:线程1 得到一条链表的状态尾 1--->35 ---->16 这是线程1 遍历时 e:1 --->35--->16 next--->35--->16 线程2 对其进行扩容。 因为hashmap1.7使用的是头插法,元素的相对位置会变 扩容完成后1---->35---->16的状态变成了 35---->1---->null 切换到线程1 e:1 next =35 由于next指向了该元素的前一个元素,所以形成了循环链表,造成了死锁。