每天一道面試題-ConcurrentHashMap vs HashMap vs LinkedHashMap

HashMap:

查詢和插入速度極快,但是線程不安全,在多線程情況下在擴容的情況下可能會形成閉環鏈路,耗光cpu資源。

LinkedHashMap:

基本和HashMap實現類似,多了一個鏈表來維護元素插入的順序,因此維護的效率會比HashMap略低。但是因為有鏈表的存在,遍歷效率會高於HashMap。

HashTable:

線程安全,但性能較差,已經不推薦使用

ConcurrentHashMap:

線程安全,而且採用分段鎖的方式進行數據同步,因此相對於Hashtable來說,效率要高。但是因為引入了段的概念,所以每次元素插入或者獲取,需要進行兩次哈希算法,第一次確定到該元素位於哪一段,第二次才能真正確定到元素位置。因此效率會低於HashMap。不過在多線程情況下,這種性能的犧牲換取數據安全是非常值得的。因此在多線程的情況下應該首選ConcurrentHashMap。

每天一道面試題-ConcurrentHashMap vs HashMap vs LinkedHashMap


分享到:


相關文章: