Java容器源碼分析-高併發處理Map-ConcurrentHashMap和HashTable

    上一章節,分析了經常使用的Map集合,隨着互聯網多線程併發的場景愈來愈多,原始的數據結構已經沒法知足真是的場景需求,因此這種線程安全的集合就顯得很是重要。這裏介紹一下ConcurrentHashMap和HashTable兩種線程安全的數據集合。    安全

    那麼在分析以前咱們首先提出一個問題ConcurrentHashMap和HashTable在作線程安全時的區別?數據結構

    這裏介紹一個比較全面分析源碼的帖子:http://blog.csdn.net/zhangerqing/article/details/8193118多線程

    總結:併發

    一、HashTable與HashMap採用的數據結構一致。只不過HashTable是線程安全的,在主要的操做方法上都實現了synchronized同步.net

    二、HashTable不容許null的key值存儲,若是存儲後會報NullPointerException異常線程

    三、ConcurrentHashMap是線程安全的HashMapblog

    四、HashTable和ConcurrentHashMap的區別在於實現鎖的機制不同,ConcurrentHashMap鎖的是哈希表中的key,而HashTable鎖的是整個哈希表,以下圖(侵刪)同步

相關文章
相關標籤/搜索