線程安全的Map合集---不只有ConcurrentHashMap和Hashtable

線程安全的Map合集---不只有ConcurrentHashMap和Hashtable

分享

線程安全的Map有哪些呢?

Hashtable

Hashtable是jdk遺留下來的工具類,簡單暴力,把線程不安全的方法全部加上了synchronized,因此肯定是線程安全的。但是他相對於HashMap還是有自己很多的特點的,例如:

1、如果構造方法指定了容量,就是指定的容量,不會像HashMap取2的冪。
2、默認初始大小爲11,擴容大小爲2倍+1
在這裏插入圖片描述
3、取模不是用的位運算,而是模運算
在這裏插入圖片描述
4、key和value都不能爲null,如圖:(null.hashcode()會拋出空指針異常)
在這裏插入圖片描述

ConcurrentHashMap

通過了cas操作和synchronized進行優化,加鎖單位是hash表中的一個節點,因此效率很高。其他部分和HashMap還是很像的。

ConcurrentSkipListMap

這個準確的說和HashMap還是有點不太相同的,這裏實現的Map是有序的,底層如同他的名字一樣,採用的是跳錶的數據結構

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