1. 首页
  2. 编程语言
  3. Java
  4. 为什么ConcurrentHashMap的key value不能为null,map可以?

为什么ConcurrentHashMap的key value不能为null,map可以?

上传者: 2021-06-17 09:57:45上传 PDF文件 68.40 KB 热度 23次

在单线程中,当我们得到的value是null的时候,我可以用hashMap.containsKey方法来区分上面说的两重含义。所以当map.get返回的值是null,在HashMap中虽然存在二义性,但是结合containsKey方法可以避免二义性。为什么ConcurrentHashMap不允许ConcurrentHashMap的使用场景为多线程。用反证法来推理,假设concurrentHashMap允许存放值为null的value。这时有A、B两个线程。线程A调用concurrentHashMap.get方法,返回为null,我们还是不知道这个null是没有映射的null还是存的值就是null。这就与我们的假设的真实情况不符合了。也就是上面说的对于key不能为null源码就是这样。。

下载地址
用户评论