Java 集合:Map 系列(ConcurrentHashMap概念)

        ConcurrentHashMap 是 JDK5 中支持高併發,高吞吐量的線程安全HashMap 的實現。它支持完全併發的讀和一定程度的併發的寫。
        ConcurrentHashMap允許多個修改操作併發的進行,關鍵在於使用了鎖分離的技術。它使用了多個鎖來控制 hash 表不同部分進行的修改。ConcurrentHashMap內部使用段(Segment)來表示這些不同的部分,每個段其實就是一個小的hash table,它們有自己的鎖。只要多個修改操作發生在不同的段上,它們就可以併發進行。
        有些方法需要跨段,比如size()和containsValue(),它們可能需要鎖定整個表而而不僅僅是某個段

ConcurrentHashMap 和 HashTable 的區別:
        HashTable 每次執行同步的時候都是需要鎖住整個結構。ConcurrentHashMap 正是爲了解決這個問題而誕生的。ConcurrentHashMap 默認會把 hash 表分成16個桶。比如說 get,put,remove等操作就是鎖住當前自己的桶。


參考:
  1. ConcurrentHashMap之實現細節: http://www.iteye.com/topic/344876
  2. hashtable 和 ConcurrentHashTable的區別:http://blog.csdn.net/wisgood/article/details/19338693
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章