提问
为什么ConcurrentHashMap的key不能为null?
看了好多帖子,都在解释value为null的情况。
但如果key为null而value不为null呢,比如put(null, "aaa")?
看了好多帖子,都在解释value为null的情况。
但如果key为null而value不为null呢,比如put(null, "aaa")?
全部评论

1.8的concurrentHashMap的锁是通过cas+synchrnozed实现的,也就是在数据落槽的时候,如果key为null,则以cas的方式进行落槽,如果不为Null,则使用synchrnozed对节点进行加锁。如果key允许为null,这会有异议性吧
都是为了避免多线程环境下的二义性问题吧
我记得是在源码中对key和value都做了null的判断
但凡看过源码,这个问题不攻自破了,putVal第一句就是一个key不为null的判断
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享