Map的使用,LinkedHashMap ConcurrentHashMap


LinkedHashMap 會將put進去的key value  按照次序進行遍歷。

ConcurrentHashMap 1.允許並發的讀操作。

  2. 性能好。根據默認的並發級別(concurrency level),Map被分割成16個部分,並且由不同的鎖控制。這意味着,同時最多可以有16個寫線程操作Map。由只能一個線程進入變成同時可由16個寫線程同時進入(讀線程幾乎不受限制),性能的提升是顯而易見的。但由於一些更新操作,如put(),remove(),putAll(),clear()只鎖住操作的部分,所以在檢索操作不能保證返回的是最新的結果。

  3. 線程安全性弱。CHM在put操作時並沒有對整個Map加鎖,所以一個線程正在put(k,v)的時候,另一個線程調用get(k)會得到null,這就會造成一個線程put的值會被另一個線程put的值所覆蓋。CHM提供的putIfAbsent(key,value)方法原子性,同時避免了線程競爭的風險。CHM適用於讀者數量超過寫者時,當寫者數量大於等於讀者時,CHM的性能是低於Hashtable和synchronized Map的。這是因為當鎖住了整個Map時,讀操作要等待對同一部分執行寫操作的線程結束。

  4. 優勢。CHM適用於做cache,在程序啟動時初始化,之后可以被多個請求線程訪問。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM