ConcurrentHashMap 併發雜湊對映

2021-06-28 16:15:16 字數 484 閱讀 5420

如執行緒1使用put進行新增元素,執行緒2不但不能使用put方法新增元素,並且也不能使用get方法來獲取元素,所以競爭越激烈效率越低。

圖1-1 hashtable中在put()方法上加鎖

hashtable容器在競爭激烈的併發環境下表現出效率低下的原因,是因為所有訪問hashtable的執行緒都必須競爭同一把鎖。那假如容器裡有多把鎖,每一把鎖用於鎖容器其中一部分資料,

那麼當多執行緒訪問容器裡不同資料段的資料時,執行緒間就不會存在鎖競爭,從而可以有效的提高併發訪問效率,這就是concurrenthashmap所使用的鎖分段技術。

圖1-2 concurrenthashtable中的put()方法,使用分段鎖

ConcurrentHashMap 原理簡要分析

在之前寫過hashtable 與hashmap 兩者之間的異同 通過前面文章,可以知道hashmap 中未進行同步考慮,而 hashtable 則使用了 synchronized 帶來的直接影響就是可選擇,我們可以在單執行緒時使用 hashmap 提高效率,而多執行緒時用 hashtable 來保證...

ConcurrentHashMap使用示例

concurrenthashmap是併發效率更高的map,用來替換其他執行緒安全的map容器,比如hashtable和collections.synchronizedmap。實際上,併發執行時,執行緒安全的容器只能保證自身的資料不被破壞,但無法保證業務的行為是否正確。錯誤的理解這裡的執行緒安全,不恰...

ConcurrentHashMap 的原理和結構

concurrenthashmap 是乙個高效的執行緒安全的hashmap,它的加鎖機制和hashtable不同,後者用的是低效的synchronized,前者用的是lock。接著前一期的hashmap,先簡單介紹下concurrenthashmap結構,再以它們的主要函式 put 和 get為切入...