HashMap扩容死锁问题-多线程
2020-02-27 12:44:50 1 举报
JDK7 HashMap扩容死锁问题分析
作者其他创作
大纲/内容
0
null
2
3
key(5)value(C)next(null)
key(7)value(B)next(key(5))
next
假设hash算法为 hash = key;老的map大小为2,现在扩容为4;
1
e
扩容数据表
key(3)value(A)next(key(7))
T1线程继续执行。
e = next;
key(7)value(B)next(key(3))
key(3)value(A)next(null)
此处形成环,如果查询到这里,陷入死循环
e.next = newTable[i];newTable[i] = null;e.next = null;
e.next = newTable[i];newTable[1] = null;e.next = null;
newTable[i] = e;
HashMap 扩容完整流程
假设条件
e.next = newTable[i];
T2线程执行完扩容;
原数据表
e.next = newTable[i];newTable[3] = key(3);e.next = key(3);
0 条评论
下一页