国产探花免费观看_亚洲丰满少妇自慰呻吟_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,寫的很詳細的


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁河县| 文山县| 沙河市| 镇江市| 安福县| 芜湖市| 湖口县| 清远市| 侯马市| 天台县| 汶川县| 乐至县| 响水县| 章丘市| 武宣县| 合作市| 扶绥县| 葫芦岛市| 鄄城县| 巢湖市| 庐江县| 宁夏| 宜宾市| 湖州市| 延安市| 青冈县| 齐齐哈尔市| 垦利县| 湖口县| 祁门县| 通化市| 静安区| 齐河县| 亳州市| 措勤县| 原阳县| 平乐县| 达孜县| 鲁甸县| 崇信县| 五峰|