ConcurrentHashMap的優勢與使用情況

來自權威書籍:Java併發編程實戰;

同步容器類在執行每個操作期間都持有一個鎖。於HashMap不同,ConcurrentHashMap用了不同的枷鎖策越來提供更高的併發性和伸縮性。

ConcurrentHashMap並不是將每個方法都在同一個鎖上同步,並使得每次只能有一個線程訪問容器,而是用一種粒度更小的枷鎖機制來實現更大程度的共享,

這種機制成爲分段鎖(Lock Striping)。在這種機制中,任意數量的讀取線程可以併發的訪問Map,執行讀取操作的線程和執行寫入操作的線程可以併發的訪問Map,

並且一定數量的寫入線程可以併發的修改Map。ConcurrentHashMap帶來的記過是:在併發訪問環境下將實現更高的吞吐量,而在單線程環境中值損失非常小的性能。

總結:與Hashtable和synchronizedMap相比,有更多的優勢和更少的劣勢,只有當應用程序需要枷鎖Map進行獨佔的訪問的時候,才應該放棄使用ConcurrentHashMap

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章