提问

为什么ConcurrentHashMap的key不能为null?
看了好多帖子,都在解释value为null的情况。
但如果key为null而value不为null呢,比如put(null, "aaa")?
全部评论
1.8的concurrentHashMap的锁是通过cas+synchrnozed实现的,也就是在数据落槽的时候,如果key为null,则以cas的方式进行落槽,如果不为Null,则使用synchrnozed对节点进行加锁。如果key允许为null,这会有异议性吧
2 回复 分享
发布于 2024-11-18 14:30 北京
都是为了避免多线程环境下的二义性问题吧
1 回复 分享
发布于 2024-11-18 13:53 安徽
我记得是在源码中对key和value都做了null的判断
1 回复 分享
发布于 2024-11-18 13:50 江西
但凡看过源码,这个问题不攻自破了,putVal第一句就是一个key不为null的判断
点赞 回复 分享
发布于 04-03 09:42 上海

相关推荐

这算盘打的
程序员小白条:都这样的,都是潜规则,你自己说可以实习一年就行了,实习可以随便跑路的
点赞 评论 收藏
分享
测试糕手手:社会第一课,随便吹牛逼,直接说四个月,别老实。老实人只会被欺负
点赞 评论 收藏
分享
评论
1
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务