一、HashMap不是線程安全的,在多線程併發的環境下容易形成死鎖,Hashtable是線程安全的,它的每一個方法中都加入了Synchronize方法,多線程狀況下,須要等待資源釋放後,再進行下一個操做,效率低下,ConcurrentHashMap的出現是爲了替代了Hashtable,線程安全,而且ConcurrentHashMap底層採用分段的數組+鏈表實現,在多線程狀況下只會鎖住某一段,對其餘段的操做依然能夠進行。數組
二、HashMap的key和value容許爲空,HashTable的key和value不容許爲空。安全
三、HashMap初始化容量爲16,並以2的倍數擴容,HashTable初始化容量爲11,並以2的倍數-1擴容,ConcurrentHashMap擴容時針對某一段進行擴容,不會打亂整個map從新排序。多線程