请你说明ConcurrentHashMap有什么优势以及1.7和1.8区别?
生活随笔
收集整理的這篇文章主要介紹了
请你说明ConcurrentHashMap有什么优势以及1.7和1.8区别?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
ConcurrentHashMap是線程安全的,在jdk1.7是采用Segment+HashEntry的方式實現的,lock加在segment上, 1.7的size計算是先采用不加鎖的方式,連續計算元素的個數,最多計算3次:
(1)如果前后兩次計算結果相同,則說明計算出來的元素個數是準確的。
(2)如果前后兩次計算結果不同,則給每個Segment進行加鎖,再計算一次元素的個數。
1.8中放棄了Segment臃腫的設計,取而代之的是采用Node+CAS+synchronized來保證并發安全進行實現,1.8中使用一個volatile類型的變量baseCount記錄元素的個數,當插入或刪除數據時,會通過addCount()方法更新baseCount,通過累加baseCount和CounterCell數組中的數量,即可得到元素的總個數。
總結
以上是生活随笔為你收集整理的请你说明ConcurrentHashMap有什么优势以及1.7和1.8区别?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 请解释一下TreeMap
- 下一篇: 请你说明一下TreeMap的底层实现?