computeIfAbsent方法会初始化一个ReservationNode来占位,它会等待计算完毕后替换当前的占位对象。 这时候ConcurrentHashMap达到容量扩容而忽略了ReservationNode情况,调用put的时候在synchronized(f)没有对ReservationNode处理,所以会出现死循环。 在jdk1.8和1.9中对比 http://gee.cs.oswego.edu/cgi- bin/viewcvs.cgi/jsr166/src/main/java/util/concurrent/ConcurrentHashMap.java?r1=1.258&r2=1.259&sortby=date&diff_format=f
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余3页未读,立即下载
评论0
最新资源