jdk1.7扩容时,不管是否有链表,并发均可能出现循环链表

扩容时使用transfer
transfer不一样于put时的判断hash冲突,直接使用头插法,若是没有冲突,则next为null。
以下:
e.next = newTable[i];
newTable[i] = e;
若是线程B设置了newTable[i] = e,线程A执行e.next = newTable[i];
则会形成e.next = e;不管是否有链表,都会形成死循环。线程

相关文章
相关标签/搜索