線程安全的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是有序的,底層如同他的名字一樣,採用的是跳錶的數據結構