1. 程式人生 > >java Concurrent包學習筆記(七):ConcurrentHashMap

java Concurrent包學習筆記(七):ConcurrentHashMap

(注意:以下講解的ConcurrentHashMap是jdk 1.8的)

一、ConcurrentHashMap的資料結構

 

 

ConcurrentHashMap在1.8中的實現,相比於1.7的版本基本上全部都變掉了。

  • 首先,取消了Segment分段鎖的資料結構,取而代之的是陣列+連結串列(紅黑樹)的結構。而對於鎖的粒度,調整為對每個陣列元素加鎖(Node)。
  • 然後是定位節點的hash演算法被簡化了,這樣帶來的弊端是Hash衝突會加劇。因此在連結串列節點數量大於8時,會將連結串列轉化為紅黑樹進行儲存。
  • 用內建鎖synchronized來代替重入鎖ReentrantLock。