為什麼要使用ConcurrentHashMap

2021-10-09 10:23:53 字數 1357 閱讀 9930

(1)

執行緒不安全的

hashmap 在多

執行緒環境下,使用

hashmap進行

put操作會引起死迴圈,

導致cpu利用率接近

100%

,所 以在併發

情況下不能使用

hashmap

。hashmap在併發執行put操作時會引起死迴圈,是因為多執行緒會導致hashmap的entry鍊錶 形成環形資料結構,一旦形成環形資料結構,entry的next節點永遠不為空,就會產生死迴圈獲 取entry

public class concurrenthashmap 

},"ftf" + i).start();}}

},"ftf");

t.start();

try catch (interruptedexception e)

}}

(2

)效率低下的

hashtable

hashtable

容器使用

synchronized

來保證線

程安全,但**程

競爭激烈的情況下

hashtable 的效率非常低下。因為

當乙個執行緒訪問

hashtable

的同步方法,其他執行緒也

訪問hashtable

的同 步方法時,會進

入阻塞或輪詢狀

態。如執行緒

1使用put進

行元素新增,執行緒

不但不能使用

put方

法新增元素,也不能使用

get方法來

獲取元素,所以

競爭越激烈效率越低。

(3)concurrenthashmap的鎖

分段技術

可有效提公升並

發訪問率

hashtable

容器在競

爭激烈的並

發環境下表

現出效率低下的原因是所有

訪問hashtable

的 執行緒都必

須競爭同一把

鎖,假如容器裡有多把

鎖,每一把鎖用於

鎖容器其中一部分資料,那麼 當多執行緒訪問

容器裡不同資料段的資料時,

執行緒間就不會存在

鎖競爭,從而可以有效提高並 發訪問效率,這就是

concurrenthashmap

所使用的

鎖分段技

術。首先將資料分成一段一段地存 儲,然後

給每一段資料配一把

鎖,當乙個

執行緒占用

鎖訪問其中乙個段資料的

時候,其他段的數 據也能被其他執行緒訪問

為什麼要使用blog

有哥們問我,你為什麼使用blog?我總結了一下,覺得有如下幾個原因。1對自己的督促 有了blog,就會經常記得寫點東西 就會經常翻翻網上的新文章,了解一下新技術,不至於迷失在忙碌的生活中 如果把自己的所感所想所學寫出了,自己對自己也會有個概念,不至於迷迷糊糊 還有,畢竟是掛在網上的文字,心中難免擔心...

為什麼要使用XML

xml 代表擴充套件標記語言 extensible markup language 是由 world wide web consortium w 3c 的 xml工作組定義的。這個工作組是這樣描述該語言的 擴充套件標記語言 xml 是 sgml 的子集,其目標是允許普通的 sgml 在web 上以目...

為什麼要使用Nginx?

有人說這些基準測試是不準確的,因為在這樣那樣的環境下,做的比較不一致。我傾向同意基準測試只是告訴了我們其中一部分情況,你能做的是消除偏見 有人見過所有人都同意乙個基準測試是公平的嗎?我是沒見過。我們投資的一些公司把web平台切換到nginx後,可以顯著的解決擴充套件問題。nginx明顯有效的實現了今...