返回信息流问题如下:
扩容的操作,在对原table中的元素,每移动一个到nextTable中才将table中对应的元素设置为ForwardingNode对吧~
然后在一个线程get()的时候
另一个线程正在扩容
get的这个线程先定位到了table[i]位置
然后被交换出CPU
然后扩容的线程把table[i]的元素移动到了nextTable
原来table[i]后面链接的链表或者是树会被拆成两部分
然后执行get的那个线程又被换进了CPU
接着找对应的key
这样会不会出现本该找到,但是找不到的情况~
我说完了,不知道说清楚没。。
这是一条镜像帖。来源:北邮人论坛 / java / #50350同步于 2016/5/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
关于jdk1.8中的ConcurrentHashMap在扩容时候get()是否能正确取
andand16
2016/5/17镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。