提问

为什么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 回复 分享
发布于 11-18 14:30 北京
我记得是在源码中对key和value都做了null的判断
1 回复 分享
发布于 11-18 13:50 江西
都是为了避免多线程环境下的二义性问题吧
1 回复 分享
发布于 11-18 13:53 安徽

相关推荐

一面:11.6二面:11.13刚hr打电话约了明天(11.19)三面,还是技术面,人有点麻,发个面经攒点人品。-------------------------------------------------------------------------------------一面:八股为主(难度指数:5分)1、自我介绍2、hashmap的实现原理3、引入红黑树之后,具体是如何实现的?4、concurrentHashMap是如何实现的?5、线程池如何实现?6、jvm的内存区域7、对AOP的了解8、bean的生命周期9、springboot创建的的单例bean是不是线程安全的?10、了解过什么设计模式?11、单例设计模式的懒汉式和饿汉式有什么区别?12、Kafka消费端是什么原理?如何获取到数据?13、消费者是通过推还是拉的方式获取消息?是单线程还是多线程?14、Kafka如何保证顺序性?15、MySQL默认存储引擎? 与另外一个有什么区别?16、哪些场景会导致索引失效?17、Redis有哪些数据类型?18、缓存和数据库的一致性是如何保证的?19、为什么会导致缓存穿透?20、讲一下雪花算法?有知道时间回拨怎么处理吗?21、对网络编程有了解吗?22、解释一下四次挥手23、TCP是如何保证可靠传输的?24、反问-------------------------------------------------------------------------------------二面:八股+项目+场景题拷打(难度指数:8分)1、自我介绍2、挑一个你的项目介绍一下3、谈谈你对Redis的理解,主要用在哪些场景?使用的时候需要注意哪些点?4、说一下缓存穿透以及缓存雪崩5、用过哪些Redis的数据类型?6、Redis的大Key问题指的是什么?7、Redis的主从复制的原理?8、讲一下RDB和AOF的持久化方式9、谈谈你对缓存和数据库的一致性问题的理解10、用过微服务吗?11、注册中心的原理?12、设计数据库的表的时候数据量过大的情况有什么措施吗?13、测试环境下如何去对sql进行优化?14、测试环境下加了索引之后你如何确保走的是正确的索引?15、索引是越多越好吗?16、数据库新增数据的时候倾向于采用自增id的好处是什么?17、设计模式知道哪些?模板模式有没有了解?策略模式有了解过吗?18、现在用一个服务框架,会去调微服务,微服务有很多机器,要调某一个微服务接口,微服务这块有一个负载均衡机制,比如说随机的、轮询的,或者基于故障转移的等等,你觉得负载均衡的机制这一块应该用什么设计模式?19、比如说现在有一个推送平台,会给很多用户发营销短信,我们接入了很多营销短信厂商,比如阿里腾讯华为等等,未来可能还会接入别的,这一个模式你觉得可以使用哪些设计模式?20、刚听你有用过Kafka,Kafka经常会用作一些异步的操作,在消费的时候可能会产生哪些重复消费的可能性?如何保证消费的幂等性?21、有做过定时任务相关的吗?22、现在一个集群有很多台机器,我的任务需要挑一台机器去执行,能用什么机制去保证每次只有一台被执行,不希望每台都被执行?23、说一下雪花算法? 机器号是如何生成的?24、spring事务这一块有了解吗?25、spring的事务注解实现的原理是什么?26、配置过数据库连接池吗?有哪些核心参数?27、cpu占用内存过高有什么排除办法?28、有遇到过OOM吗?那你分析一下,现在有一个web应用,大概什么情况下会出现内存溢出?29、mybatis的分页查询是怎么操作的?30、介绍一下乐观锁31、还在学校吗?老家哪里的?32、反问
拿个offer就收手:佬,好厉害,三面加油
查看55道真题和解析
点赞 评论 收藏
分享
1 6 评论
分享
牛客网
牛客企业服务