ConcurrentHashMap HashMap Hashtable区别
1. HashMap Hashtable,ConcurrentHashMap区别
1) 继承关系不同
2) HashMap线程不安全, ConcurrentHashMap,Hashtable线程安全,但是ConcurrentHashMap的效率比Hashtable高,ConcurrentHashMap已经可以完全取代Hashtable
HashTable 使用synchronized修饰方法实现线程安全,即锁住整个HashTable,效率低,ConcurrentHashMapConcurrentHashMap使用CAS和synchronized修饰实现线程安全,但synchronized是锁数据的单个元素上Node<K,V>(如下图中红色Node<K,V>),(详细讲解将在后续的concurrentHashMap源码解析中讲解)
3) 扩充不同
Hashtable初始size为11,扩容:newsize = olesize*2+1
HashMap,ConcurrentHashMap 初始size为16,扩容:newsize = oldsize*2,size一定为2的n次幂
4) key是否可以为null
HashMap的key可以为null,Hashtable ,ConcurrentHashMap 的key都不可以为nul