过程 在 jdk 1.7 及以前HashMap使用头插法,多线程的情况下容易形成环。 假设在下标为1处有一个长度为2的链表,如果再次插入一个节点,就需要resize()扩容。 此时两个线程A和B执行put()操作,A线程先执行,执行完transfer () 中的Entry<K,V> next = e.next;被挂起,此时e指针指向5,next指向7,如图所示。 此时线程B执行,将数组扩大两倍,链表仍散列在下标为