所以 ConcurrentHashMap 扩容的时候,线程 A 先 put(a,b),线程 B 后 get(a),线程 B 获得的结果会是 null?
网上的资料上说扩容时 get 操作走旧表并不阻塞,但 put 操作阻塞,故有此问。
多谢 ----------------------- 以下是精选回复-----------------------
答:有没有代码
答:JavaDoc: Retrievals reflect the results of the most recently completed update operations holding upon their onset.
就是说如果 get() 的同时也在 put(),那么 get() 出来的值就是旧值(或者 Null )。
答:弱一致性。
答:既然是两个线程你怎么能肯定 A 比 B 先执行?
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 所以 ConcurrentHashMap 扩容的时候,线程 A 先 put(a,b),线程 B 后 get(a),线程 B 获得的结果会是 null?
网站模板库 » 所以 ConcurrentHashMap 扩容的时候,线程 A 先 put(a,b),线程 B 后 get(a),线程 B 获得的结果会是 null?
0条评论