SynchronizedMap 和 ConcurrentHashMap 有什么區別?


SynchronizedMap 一次鎖住整張表來保證線程安全所以每次只能有一個線程來 

訪為 map。

ConcurrentHashMap 使用分段鎖來保證在多線程下的性能

ConcurrentHashMap 中則是一次鎖住一個桶。ConcurrentHashMap 默認將 

hash 表分為 16 個桶諸如 get,put,remove 等常用操作只鎖當前需要用到的桶

這樣原來只能一個線程進入現在卻能同時有 16 個寫線程執行並發性能的提 

升是顯而易見的

另外 ConcurrentHashMap 使用了一種不同的迭代方式在這種迭代方式中 

iterator 被創建后集合再發生改變就不再是拋出 

ConcurrentModificationException,取而代之的是在改變時 new 新的數據從而 

不影響原有的數據 ,iterator 完成后再將頭指針替換為新的數據 ,這樣 iterator

線程可以使用原來老的數據而寫線程也可以並發的完成改變


免責聲明!

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



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