对table[1]中的链表来说,进入while循环,此时e=key(3),那么next=key(7),经过计算重新定位e=key(3)在新表中的位置,并把e=key(3)挂在newTable[3]的位置
这样循环下去,将table[1]中的链表循环完成后,于是HashMap就完成了扩容
并发下的扩容
上面都是单线程下的扩容,当多线程进行扩容时,会是什么样子呢?
初始的HashMap还是:
我们现在假设有两个线程并发操作,都进入了扩容操作, 我们以颜色进行区分两个线程。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HvuN5qOB-165103819