ConcurrentHashMap HashMap Hashtable区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011517841/article/details/77744430

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

猜你喜欢

转载自blog.csdn.net/u011517841/article/details/77744430