国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 马龙县| 兖州市| 紫金县| 夏邑县| 柳州市| 台中县| 长子县| 青阳县| 青河县| 探索| 大同县| 平遥县| 达拉特旗| 泌阳县| 常德市| 奉化市| 榆中县| 濮阳市| 河东区| 林周县| 瑞昌市| 石棉县| 鸡泽县| 商河县| 安宁市| 新竹县| 铁岭县| 巩义市| 咸丰县| 高平市| 大关县| 姚安县| 合水县| 盐源县| 东海县| 红桥区| 乌鲁木齐市| 象山县| 杨浦区| 江安县| 同德县|