HashMap 并发死循环分析
前言HashMap 存在并发死循环的问题,在1.7版本之前是因为多线程并发调用 put 方法容易产生环状链表,之后如果再调用get方法,如果刚好命中环状链表所在的槽位,则会用导致死循环,使得 CPU 占用率飙升.在JDK 1.8 之后,这一问题得到了修复,但是仍旧在某些特殊的情况下会发生另外一种死循环。这里就这两种情况逐一进行分析.链表的插入方式在分析之前,我们先了解一下链表的两种插入方式:头插法
前言HashMap 存在并发死循环的问题,在1.7版本之前是因为多线程并发调用 put 方法容易产生环状链表,之后如果再调用get方法,如果刚好命中环状链表所在的槽位,则会用导致死循环,使得 CPU 占用率飙升.在JDK 1.8 之后,这一问题得到了修复,但是仍旧在某些特殊的情况下会发生另外一种死循环。这里就这两种情况逐一进行分析.链表的插入方式在分析之前,我们先了解一下链表的两种插入方式:头插法