提问
为什么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的判断
都是为了避免多线程环境下的二义性问题吧
相关推荐
查看11道真题和解析
点赞 评论 收藏
分享
点赞 评论 收藏
分享