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的结构以下线程
这时候二个元素的下一个节点指向了对方,因此就形成了环链。3d