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

首頁 > 學院 > 開發設計 > 正文

整理一些ConcurrentHashMap相關的知識

2019-11-09 17:09:25
字體:
來源:轉載
供稿:網友

1:ConcurrentHashMap采用了分段鎖的設計,只有在同一個分段內才存在競態關系,不同的分段鎖之間沒有鎖競爭

ConcurrentHashMap中的分段鎖稱為Segment,它即類似于HashMap(JDK7與JDK8中HashMap的實現)的結構,即內部擁有一個Entry數組,數組中的每個元素又是一個鏈表;同時又是一個ReentrantLock(Segment繼承了ReentrantLock)。ConcurrentHashMap中的HashEntry相對于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都不允許為空,這一點和HashTable一致,和HashMap不同,當你put(put(key,value))其中一個為null的時候,會返回一個 java.lang.NullPointerException這個錯誤,查看源碼可以看到

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

需要了解具體的原理實現,可以查看  http://blog.csdn.net/liuzhengkang/article/details/2916620,寫的很詳細的


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 松江区| 叶城县| 南乐县| 东兴市| 亳州市| 北安市| 临西县| 河间市| 从江县| 丹阳市| 龙岩市| 七台河市| 南宁市| 福贡县| 扶余县| 修水县| 融水| 镇巴县| 西丰县| 外汇| 鄄城县| 建始县| 临夏县| 闸北区| 台州市| 焦作市| 青冈县| 金塔县| 巢湖市| 黎城县| 怀来县| 汝州市| 灵台县| 嵊州市| 特克斯县| 包头市| 溧水县| 罗定市| 陆良县| 娄烦县| 西安市|