对HashMap在并发编程中死循环的疑惑
使用JDK1.7,HashMap的初始化大小为4,负载因子为0.75f,有三个元素被hash到同一个位置,然后在两个线程中分别对其进行put,此时两条线程同时进行扩容,假设扩容时,HashMap中的三个元素又hash到同一个位置上,线程A执行了transfer方法中Entry<K,V> next = e.next语句后,线程A被挂起,执行线程B,在线程B执行完了transfer方法,还没有把扩容后的table赋值给HashMap内部的table,线程B被挂起,线程A继续执行transfer方法,引发了该位置的链表节点循环引用。
疑惑是:在线程A执行了transfer方法中Entry<K,V> next = e.next语句后,线程A被挂起,执行线程B,在线程B执行完了transfer方法,并且把扩容后的table赋值给HashMap内部的table,线程B被挂起,线程A继续执行transfer方法,还会引发死循环吗?