Java HashTable HashMap ConcurrentHashMap 對比選擇

1.總結

這個面試中問到太多了,先來個結論
單線程用HashMap
多線程用ConcurrentHashMap,Java5+
HashTable基本是歷史遺留問題了
除了HashMap不是外,HashTable和ConcurrentHashMap都是線程安全的

2.區別

HashTable是幾乎每個方法都加了synchronized同步類,所以保障了線程安全,但是這個粒度過大,導致性能的下降
HashMap沒有加鎖,所以不安全,但是允許null值的存在(但這是有歧義的)

爲什麼ConcurrentHashMap不允許空值,這是設計者奇怪的設定

ConcurrentHashMap是Java5中新增的併發類,通過減少鎖的粒度,提高併發度++
詳細如下
對比圖片

3.參考

stack overflow的回答
分析ConcurrentHashMap
Hashtable與ConcurrentHashMap區別

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章