【Java】HashMap和Hashtable的区别,HashMap和ConcurrentHashMap的区别

HashMap和Hashtable的区别,HashMap和ConcurrentHashMap的区别

HashMap和Hashtable的区别

  1. Hashtable是同步的,加了synchronized锁,而HashMap不是。没有加synchronized锁的对象,性能通常比加了synchronized锁的对象要更好一些,因此,如果是非多线程程序,不需要考虑锁、同步等问题,那么使用HashMap更好。
  2. Hashtable不允许有空的键或值。HashMap允许空键和空值。
  3. HashMap有一个子类LinkedHashMap,对这个类对象进行迭代时,它的顺序是有序的(按插入顺序排序)。如有需要,你也能轻易的从LinkedHashMap转化成HashMap。Hashtable就没那么简单了,

总之,如果你无需关心同步(synchronized)问题,我会建议用HashMap。反之,你可以考虑使用ConcurrentHashMap

HashMap和ConcurrentHashMap的区别

  1. HashMap不是线程安全的,而ConcurrentHashMap是线程安全的。
  2. ConcurrentHashMap采用锁分段技术,将整个Hash桶进行了分段segment,也就是将这个大的数组分成了几个小的片段segment,而且每个小的片段segment上面都有锁存在,那么在插入元素的时候就需要先找到应该插入到哪一个片段segment,然后再在这个片段上面进行插入,而且这里还需要获取segment锁。
    3、ConcurrentHashMap让锁的粒度更精细一些,并发性能更好。

如有错误,还请多多指教!
转载或者引用本文内容请注明来源及原作者:橘足轻重;

猜你喜欢

转载自blog.csdn.net/weixin_44510587/article/details/129259276