HashMap死循环原因


单线程扩容

  • 初始情况
  • 开始扩容
  • 最终结果

多线程扩容导致死循环

  • 两个线程A与B同时进行扩容
  • A线程先进行扩容

注意:此时若A线程挂起,开始执行B线程

  • B开始第一次循环扩容
  • 第二次循环

e2指向下一个元素,next指向下下个元素

  • 第三次循环

3需要指向下一个节点,即为2导致死循环

参考




Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • 2874. Maximum Value of an Ordered Triplet II
  • 2873. Maximum Value of an Ordered Triplet I
  • 2140. Solving Questions With Brainpower
  • 2278. Percentage of Letter in String
  • 1898. Maximum Number of Removable Characters