HashMap丰歌、ConcurrentHashMap荒澡、HashTable的區(qū)別

HashMap vs ConcurrentHashMap

引入ConcurrentHashMap是為了在同步集合HashTable之間有更好的選擇报辱,HashTableHashMapConcurrentHashMap主要的區(qū)別在于HashMap不是同步的单山、線程不安全的和不適合應用于多線程并發(fā)環(huán)境下碍现,而ConcurrentHashMap是線程安全的集合容器,特別是在多線程和并發(fā)環(huán)境中饥侵,通常作為Map的主要實現(xiàn)鸵赫。除了線程安全外衣屏,他們之間還有一些細微的不同躏升,本文會介紹到。順便說說狼忱,HashMapConcurrentHashMap還有ConcurrentHashMapHashtable兩者之間的區(qū)別在Java面試中經常出現(xiàn)膨疏,特別是高級Java程序員。

HashMap與ConcurrentHashMap的區(qū)別

在這部分钻弄,我們會看到更多關于HashMapConcurrentHashMap的細節(jié)和對比它們之間的參數比如線程安全佃却、同步、性能和基本的使用窘俺。

  1. 就像上面所說他們之間的第一個重要的區(qū)別就是ConcurrentHashMap是線程安全的和在并發(fā)環(huán)境下不需要加額外的同步饲帅。雖然它不像Hashtable那樣需要同樣的同步等級(全表鎖),但也有很多實際的用途瘤泪。
  2. 你可以使用Collections.synchronizedMap(HashMap)來包裝HashMap作為同步容器灶泵,這時它的作用幾乎與Hashtable一樣,當每次對Map做修改操作的時候都會鎖住這個Map對象,而ConcurrentHashMap會基于并發(fā)的等級來劃分整個Map來達到線程安全对途,它只會鎖操作的那一段數據而不是整個Map都上鎖赦邻。
  3. ConcurrentHashMap有很好的擴展性,在多線程環(huán)境下性能方面比做了同步的HashMap要好实檀,但是在單線程環(huán)境下惶洲,HashMap會比ConcurrentHashMap好一點。

總結一下以上兩者的區(qū)別膳犹,它們在線程安全恬吕、擴展性、同步之間的區(qū)別须床。如果是用于緩存的話铐料,ConcurrentHashMap是一個更好的選擇,在Java應用中會經常用到。ConcurrentHashMap在讀操作線程數多于寫操作線程數的情況下更勝一籌余赢。

ConcurrentHashMap vs Hashtable vs Synchronized Map

雖然三個集合類在多線程并發(fā)應用中都是線程安全的芯义,但是他們有一個重大的差別,就是他們各自實現(xiàn)線程安全的方式妻柒。Hashtable是jdk1的一個遺棄的類扛拨,它把所有方法都加上synchronized關鍵字來實現(xiàn)線程安全。所有的方法都同步這樣造成多個線程訪問效率特別低举塔。Synchronized MapHashTable差別不大绑警,也是在并發(fā)中作類似的操作,兩者的唯一區(qū)別就是Synchronized Map沒被遺棄央渣,它可以通過使用Collections.synchronizedMap()來包裝Map作為同步容器使用计盒。

另一方面,ConcurrentHashMap的設計有點特別芽丹,表現(xiàn)在多個線程操作上北启。它不用做外的同步的情況下默認同時允許16個線程讀和寫這個Map容器。因為其內部的實現(xiàn)剝奪了鎖拔第,使它有很好的擴展性咕村。不像HashTableSynchronized MapConcurrentHashMap不需要鎖整個Map蚊俺,相反它劃分了多個段(segments)懈涛,要操作哪一段才上鎖那段數據。

坦白說泳猬,集合類是一個最重要的Java API批钠,我覺得恰當的使用它們是一種藝術。依我個人經驗得封,我會使用ArrayList這些容器來提高自己的Java程序的性能埋心,而不會去用一些遺棄的容器比如Vector等等,在Java 5之前呛每,Java集合容器有一個很致命的缺陷就是缺乏可擴展性踩窖。
同步集合類比如HashtableVector在多線程Java應用里面逐漸成為障礙物;在jdk5后出現(xiàn)一些很好的并發(fā)集合晨横,對大容量洋腮、低延遲的電子交易系統(tǒng)有很大影響,是快速存取數據的支柱手形。

原文地址:
ConcurrentHashMap和HashMap的區(qū)別
ConcurrentHashMap vs Hashtable vs Synchronized Map

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末啥供,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子库糠,更是在濱河造成了極大的恐慌伙狐,老刑警劉巖涮毫,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贷屎,居然都是意外死亡罢防,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門唉侄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咒吐,“玉大人,你說我怎么就攤上這事属划√裉荆” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵同眯,是天一觀的道長绽昼。 經常有香客問我,道長须蜗,這世上最難降的妖魔是什么硅确? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮唠粥,結果婚禮上疏魏,老公的妹妹穿的比我還像新娘停做。我一直安慰自己晤愧,他們只是感情好,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布蛉腌。 她就那樣靜靜地躺著官份,像睡著了一般。 火紅的嫁衣襯著肌膚如雪硫戈。 梳的紋絲不亂的頭發(fā)上盯仪,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天垫毙,我揣著相機與錄音,去河邊找鬼钠右。 笑死,一個胖子當著我的面吹牛忘蟹,可吹牛的內容都是我干的飒房。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼媚值,長吁一口氣:“原來是場噩夢啊……” “哼狠毯!你這毒婦竟也來了?” 一聲冷哼從身側響起褥芒,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤嚼松,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體献酗,經...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡寝受,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了罕偎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羡蛾。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖锨亏,靈堂內的尸體忽然破棺而出痴怨,到底是詐尸還是另有隱情,我是刑警寧澤器予,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布浪藻,位于F島的核電站,受9級特大地震影響乾翔,放射性物質發(fā)生泄漏爱葵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一反浓、第九天 我趴在偏房一處隱蔽的房頂上張望萌丈。 院中可真熱鬧,春花似錦雷则、人聲如沸辆雾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽度迂。三九已至,卻和暖如春猜揪,著一層夾襖步出監(jiān)牢的瞬間惭墓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工而姐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留腊凶,地道東北人。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓拴念,卻偏偏與公主長得像钧萍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子丈莺,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內容

  • Java8張圖 11划煮、字符串不變性 12、equals()方法缔俄、hashCode()方法的區(qū)別 13弛秋、...
    Miley_MOJIE閱讀 3,696評論 0 11
  • Java SE 基礎: 封裝器躏、繼承、多態(tài) 封裝: 概念:就是把對象的屬性和操作(或服務)結合為一個獨立的整體蟹略,并盡...
    Jayden_Cao閱讀 2,103評論 0 8
  • 1. Java基礎部分 基礎部分的順序:基本語法登失,類相關的語法,內部類的語法挖炬,繼承相關的語法揽浙,異常的語法,線程的語...
    子非魚_t_閱讀 31,598評論 18 399
  • 原文轉自:http://www.54tianzhisheng.cn/2017/06/10/HashMap-Hash...
    beneke閱讀 3,154評論 1 66
  • 受瀟灑姐影響钓猬,在生日那天,我都會寫些東西撩独,留下些印記敞曹。31歲,給老公寫了封信综膀;32歲澳迫,給女兒寫了封信;而今年剧劝,想給...
    小為為媽閱讀 520評論 2 3