偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

美團(tuán)太細(xì)了,HashMap可以存Null,ConcurrentHashMap不可以,為什么?

開(kāi)發(fā) 前端
?ConcurrentMap(如ConcurrentHashMap、ConcurrentSkipListMap)不允許使用Null值的主要原因是,在非并發(fā)的Map中(如HashMap),是可以容忍模糊性(二義性)的,而在并發(fā)Map中是無(wú)法容忍的。

我們知道,ConcurrentHashMap在使用時(shí),和HashMap有一個(gè)比較大的區(qū)別,那就是HashMap中,null可以作為鍵或者值都可以。而在ConcurrentHashMap中,key和value都不允許為null。

那么,為什么呢?為啥ConcurrentHashMap要設(shè)計(jì)成這樣的呢?

關(guān)于這個(gè)問(wèn)題,其實(shí)最有發(fā)言權(quán)的就是ConcurrentHashMap的作者——Doug Lea。

他自己曾經(jīng)出面解釋過(guò)這個(gè)問(wèn)題,內(nèi)容如下(原文地址已經(jīng)打不開(kāi)了,大家將就著看一下截圖吧) :

圖片

主要意思就是說(shuō):

ConcurrentMap(如ConcurrentHashMap、ConcurrentSkipListMap)不允許使用null值的主要原因是,在非并發(fā)的Map中(如HashMap),是可以容忍模糊性(二義性)的,而在并發(fā)Map中是無(wú)法容忍的。

假如說(shuō),所有的Map都支持null的話,那么map.get(key)就可以返回null,但是,這時(shí)候就會(huì)存在一個(gè)不確定性,當(dāng)你拿到null的時(shí)候,你是不知道他是因?yàn)楸緛?lái)就存了一個(gè)null進(jìn)去還是說(shuō)就是因?yàn)闆](méi)找到而返回了null。

在HashMap中,因?yàn)樗脑O(shè)計(jì)就是給單線程用的,所以當(dāng)我們map.get(key)返回null的時(shí)候,我們是可以通過(guò)map.contains(key)檢查來(lái)進(jìn)行檢測(cè)的,如果它返回true,則認(rèn)為是存了一個(gè)null,否則就是因?yàn)闆](méi)找到而返回了null。

但是,像ConcurrentHashMap,它是為并發(fā)而生的,它是要用在并發(fā)場(chǎng)景中的,當(dāng)我們map.get(key)返回null的時(shí)候,是沒(méi)辦法通過(guò)通過(guò)map.contains(key)檢查來(lái)準(zhǔn)確的檢測(cè),因?yàn)樵跈z測(cè)過(guò)程中可能會(huì)被其他線程鎖修改,而導(dǎo)致檢測(cè)結(jié)果并不可靠。

所以,為了讓ConcurrentHashMap的語(yǔ)義更加準(zhǔn)確,不存在二義性的問(wèn)題,他就不支持null。

責(zé)任編輯:姜華 來(lái)源: Hollis
相關(guān)推薦

2021-04-16 17:02:21

數(shù)組C++語(yǔ)言

2015-06-25 13:29:21

2014-11-28 16:04:36

浪潮

2023-08-22 20:43:09

HashMap單線程null

2020-10-21 09:16:49

Linux開(kāi)源操作系統(tǒng)

2022-05-08 18:18:40

JDKValueHashMap

2022-05-19 10:04:15

UIAndroid子線程

2009-01-11 10:05:44

郵件宕機(jī)摩卡

2022-01-27 07:02:52

JavaHashMap單線程

2020-03-23 12:58:34

美團(tuán)公有云互聯(lián)網(wǎng)

2019-10-24 15:20:10

微信分享

2021-02-03 14:40:22

Python字典語(yǔ)言

2016-04-01 12:25:12

華為32路服務(wù)器/華為

2020-12-30 10:04:46

userMapper接口

2015-07-02 10:15:42

密碼

2025-06-05 03:10:00

mmapmalloc共享內(nèi)存

2022-03-07 00:21:26

互聯(lián)網(wǎng)IP域名

2024-12-13 15:37:55

2019-08-07 11:46:45

電腦軟件硬件

2020-02-11 11:37:37

比特幣區(qū)塊鏈加密
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)