HashMap在1.8相对1.7做了很多改进,比如红黑树,还有今天要说的环链的形成,之前看别人博客只是说到了1.7版本HashMap在扩容的时候会形成环链,但是没有说到具体原因。


第二幅图文字我在这重复一下:但是这时候Thread-2苏醒了,此时的Thread-2遍历的还是之前的那个old table,所以Thread-2来做第一次循环的时候第一个元素e的结构是{key=1,value=1,next=2},然后Thread-2把这个新的元素移到新的table上去,但是此时的newtable的结构如下


这时候二个元素的下一个节点指向了对方,所以就造成了环链。