国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

整理一些ConcurrentHashMap相關(guān)的知識(shí)

2019-11-09 15:55:23
字體:
供稿:網(wǎng)友

1:ConcurrentHashMap采用了分段鎖的設(shè)計(jì),只有在同一個(gè)分段內(nèi)才存在競(jìng)態(tài)關(guān)系,不同的分段鎖之間沒有鎖競(jìng)爭(zhēng)

ConcurrentHashMap中的分段鎖稱為Segment,它即類似于HashMap(JDK7與JDK8中HashMap的實(shí)現(xiàn))的結(jié)構(gòu),即內(nèi)部擁有一個(gè)Entry數(shù)組,數(shù)組中的每個(gè)元素又是一個(gè)鏈表;同時(shí)又是一個(gè)ReentrantLock(Segment繼承了ReentrantLock)。ConcurrentHashMap中的HashEntry相對(duì)于HashMap中的Entry有一定的差異性:HashEntry中的value以及next都被volatile修飾,這樣在多線程讀寫過程中能夠保持它們的可見性,代碼如下:

12345staticfinal class HashEntry<K,V> {        finalint hash;        finalK key;        volatileV value;        volatileHashEntry<K,V> next;

2:ConcurrentHashMap的key和value都不允許為空,這一點(diǎn)和HashTable一致,和HashMap不同,當(dāng)你put(put(key,value))其中一個(gè)為null的時(shí)候,會(huì)返回一個(gè) java.lang.NullPointerException這個(gè)錯(cuò)誤,查看源碼可以看到

 @Override        public Object put(String key, Object value) {            if (null == key || null == value) {                throw new NullPointerException();            }            validateKey(key);            return super.put(key, value);        }

需要了解具體的原理實(shí)現(xiàn),可以查看  http://blog.csdn.net/liuzhengkang/article/details/2916620,寫的很詳細(xì)的


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 长丰县| 泗洪县| 杭锦后旗| 泸水县| 兴宁市| 巨野县| 行唐县| 河津市| 定陶县| 繁昌县| 徐汇区| 青冈县| 承德市| 澄城县| 浠水县| 霞浦县| 东阿县| 民丰县| 城口县| 张家口市| 景谷| 江永县| 南京市| 施秉县| 巴彦淖尔市| 福泉市| 车致| 沙田区| 长沙县| 阿克陶县| 当涂县| 措勤县| 平乐县| 正阳县| 上栗县| 繁峙县| 陆丰市| 永州市| 鹤壁市| 仁化县| 即墨市|