CurrentHashMap原理

ConcurrentHashMap內部數據結構是hashTable,但是與hashTable不同的是CurrentHashMap使用了鎖分離技術,即:使用多個不同的鎖來控制對HashTable的不同部分進行修改,其內部的不同部分使用Segment來表示。這樣一個大的HashTable就會被分爲多個小的HahTable,每個鎖作用在不同的小HashTable上。當多個操作發生在不同的Segment上,就可以進行併發操作了。

但是有些操作例如:size(),需要將整個表鎖定,先按順序鎖定每個段的,然後進行操作,操作完後再按順序釋放所有段的鎖。

ConcurrentHashMap實際上就是將一個大HashTable分割成多個小的HashTable,然後在每個小的HashTable上加鎖,實現鎖分離。

ConcurrentHashMap的實現方式:

ConcurrentHashMap主要有三個實體類ConcurrentHashMap(整個Hash表),Segment(桶),HashEntry(節點)。

應用場景:當有一個大數組或集合需要多個線程共享

 

發佈了55 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章