专栏名称: 蚂蚁金服ProtoTeam
数据前端团队
目录
相关文章推荐
51好读  ›  专栏  ›  蚂蚁金服ProtoTeam

图解HashMap(二)

蚂蚁金服ProtoTeam  · 掘金  · 前端  · 2017-12-07 07:34

正文

请到「今天看啥」查看全文


前戏是这样的:有两个线程分别叫Thread1和Thread2,它们都有操作同一个hashMap的权利,假设hashMap中的键值对是12个,石头和盖伦扩容前后的hash值与新旧数组长度取模运算后还是5。扩容前的模拟堆内存情况如图

Thread1得到执行权(Thread2被挂起),Thread1往hashMap里put第13个键值对的时候判断超过阀值,执行扩容操作,Thread1创建了一个新数组,还没来得及转移旧键值对的时候,系统时间片反手切到Thread2(Thread1被挂起),整个过程用图表示

可以看到Thread1只是创建了个新数组,还没来得及转移就被挂起了,新数组没有内容,此时在Thread1的视角认的是e是石头,next是盖伦;此时的模拟内存图情况

再看下Thread2的操作,同样Thread2往hashMap里put第13个键值对的时候判断超过阀值,执行扩容操作,Thread2先创建一个新数组,不同的是,Thread2运气好,在时间片轮换前转移工作也走完了。第一次遍历

第二次遍历

此时模拟的内存情况







请到「今天看啥」查看全文


推荐文章
知乎日报  ·  小事|医闹
8 年前
大家-腾讯新闻  ·  张明扬:四面受敌的晚明中国
8 年前
法律读库  ·  变态导演的七宗罪
8 年前