(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明顯有效的實現了今...