美文网首页
HashMap,Hashtable和ConcurrentHash

HashMap,Hashtable和ConcurrentHash

作者: Leocat | 来源:发表于2017-01-16 11:52 被阅读59次

    HashMap,Hashtable和ConcurrentHashMap

    HashMap和Hashtable的区别

    主要有三方面:线程安全性,同步以及速度

    1. HashMap可以接受null的键和null的值,而Hashtable不行
    2. HashMap是非synchronized,而Hashtable是synchronized,所以Hashtable是线程安全的,多个线程可以共享同一个Hashtable,而HashMap不行。可以使用Collections.synchronizedMap(Map<K,V> m)方法来从HashMap中获取线程安全的Map。
    3. 因为Hashtable是线程安全的,需要进行同步,所以单线程环境下速度比HashMap慢。

    ConcurrentHashMap和Hashtable的区别

    1. Java5引入了ConcurrentHashMap
    2. Hashtable和ConcurrentHashMap都可以用于多线程环境,但是和Collections.synchronizedMap方法获取的
      线程安全的Map一样,Hashtable仅有单个锁,对整个集合加锁。所以当Hashtable的大小增到一定程度时候,性能
      会急剧下降,因为迭代时需要整个集合需要被锁定更长的时间。
    3. ConcurrentHashMap中引入分割(segmentation),无论它变得多大,仅仅需要锁定map的某个部分,而其它的线程不需要
      等到迭代完成才能访问map。

    ConcurrentHashMap仅仅锁定map的某个部分,而Hashtable则会锁定整个map。

    HashMap和Hashtable的区别

    ConurrentHashMap和Hashtable的区别

    相关文章

      网友评论

          本文标题:HashMap,Hashtable和ConcurrentHash

          本文链接:https://www.haomeiwen.com/subject/eftpbttx.html