JDK1.8怎么解决HashMap死循环的问题?

  • Post author:
  • Post category:其他


JDK1.8之前出现死循环的原因:

HashMap在多线程环境下,同时进行

put

操作,并且同时进行

扩容

时,会出现

链表环

,导致死循环

因为jdk1.8之前采用的是


头插法


,新加入的冲突元素将会插到原有链表的头部。


扩容之后,链表上的元素顺序会反过来。这也是造成死循环的原因之一

JDK1.8解决之前版本出现的死循环:

jdk1.8后是直接把节点放到扩容后原有链表的

尾部

其实JDK1.8也会出现死循环,只是原因不同:

i)链表转换为树

ii)对树进行操作时



版权声明:本文为di_ko原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。