占小狼老生常谈,HashMap死循环
详细分析了HashMap多线程环境下的问题。
一点感悟:
hashmap多线程扩容,发生死循环。需要满足以下几点。
1.新建立的链表跟原链表顺序相反
2.线程A将构造出来的逆向链表刷新到主内存
3.线程B重新从主内存获取到新的链表引用
jdk8已经修复这个问题,新构造出来的链表顺序与原链表相同
占小狼老生常谈,HashMap死循环
详细分析了HashMap多线程环境下的问题。
一点感悟:
hashmap多线程扩容,发生死循环。需要满足以下几点。
1.新建立的链表跟原链表顺序相反
2.线程A将构造出来的逆向链表刷新到主内存
3.线程B重新从主内存获取到新的链表引用
jdk8已经修复这个问题,新构造出来的链表顺序与原链表相同