HashMap問答

HashMap是不是線程安全?

不是線程安全的崇裁。

為什么不安全?

線程不安全的兩個添加是束昵,數(shù)據(jù)可共享拔稳、可修改。HashMap底層是用Node[]數(shù)組來存儲元素锹雏,滿足可共享和可修改壳炎,所以在多線程一起更新時,會得到不可預(yù)期的結(jié)果逼侦。

有什么安全的實(shí)現(xiàn)方式匿辩?

在以前可以用HashTable來代替,它的put榛丢、remove等對方法都加了鎖铲球,在多線程下是安全的。但是鎖加在方法上晰赞,力度太大稼病,導(dǎo)致性能不理想。所以在JDK1.5后引入了并發(fā)包掖鱼,里面的ConcurrentHashMap解決了HashMap線程安全問題和Hashtable的性能問題然走。

為什么ConcurrentHashMap是線程安全的?

ConcurrentHashMap通過加鎖來互斥多線程的修改操作戏挡,但是它鎖力度是每個桶芍瑞,會拿每個桶的第一個元素作為鎖對象,對一個桶進(jìn)行加鎖褐墅。多個桶之間的修改是相互獨(dú)立的拆檬。另外在很多地方用了CAS操作,來避免加鎖妥凳。CAS是通過直接調(diào)用CPU的指令來更新數(shù)據(jù)竟贯,是一個原子性操作,比加鎖開銷要小逝钥。但它是建立在低競態(tài)的前提下屑那。

ConcurrentHashMap可以替代HashMap嗎?

這要根據(jù)不同的場景去分析。如果是在多線程環(huán)境下可能會發(fā)生線程不安全的問題持际,可以用ConcurrentHashMap替代HashMap沃琅;但沒有線程安全問題時,用HashMap性能更好选酗。這跟StringBuilder和StringBuffer一樣阵难。當(dāng)然也可以通過ThreadLocal+HashMap來替代ConcurrentHashMap岳枷,這是一種空間換時間的思想芒填。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市空繁,隨后出現(xiàn)的幾起案子殿衰,更是在濱河造成了極大的恐慌,老刑警劉巖盛泡,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闷祥,死亡現(xiàn)場離奇詭異,居然都是意外死亡傲诵,警方通過查閱死者的電腦和手機(jī)凯砍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拴竹,“玉大人悟衩,你說我怎么就攤上這事∷ò荩” “怎么了座泳?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長幕与。 經(jīng)常有香客問我挑势,道長,這世上最難降的妖魔是什么啦鸣? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任潮饱,我火速辦了婚禮,結(jié)果婚禮上诫给,老公的妹妹穿的比我還像新娘饼齿。我一直安慰自己,他們只是感情好蝙搔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布缕溉。 她就那樣靜靜地躺著,像睡著了一般吃型。 火紅的嫁衣襯著肌膚如雪证鸥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機(jī)與錄音枉层,去河邊找鬼泉褐。 笑死,一個胖子當(dāng)著我的面吹牛鸟蜡,可吹牛的內(nèi)容都是我干的膜赃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼揉忘,長吁一口氣:“原來是場噩夢啊……” “哼跳座!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起泣矛,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤疲眷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后您朽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狂丝,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年哗总,在試婚紗的時候發(fā)現(xiàn)自己被綠了几颜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡讯屈,死狀恐怖蛋哭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情耻煤,我是刑警寧澤具壮,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站哈蝇,受9級特大地震影響棺妓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜炮赦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一怜跑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吠勘,春花似錦性芬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至峭拘,卻和暖如春俊庇,著一層夾襖步出監(jiān)牢的瞬間狮暑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工辉饱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搬男,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓彭沼,卻偏偏與公主長得像缔逛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子姓惑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Java8張圖 11褐奴、字符串不變性 12、equals()方法挺益、hashCode()方法的區(qū)別 13歉糜、...
    Miley_MOJIE閱讀 3,701評論 0 11
  • 在一個方法內(nèi)部定義的變量都存儲在棧中乘寒,當(dāng)這個函數(shù)運(yùn)行結(jié)束后望众,其對應(yīng)的棧就會被回收,此時伞辛,在其方法體中定義的變量將不...
    Y了個J閱讀 4,416評論 1 14
  • 從三月份找實(shí)習(xí)到現(xiàn)在烂翰,面了一些公司,掛了不少蚤氏,但最終還是拿到小米甘耿、百度、阿里竿滨、京東佳恬、新浪、CVTE于游、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,240評論 11 349
  • 【書籍名稱】 《活法》 作者:[日]稻盛和夫 【閱讀感受】 1毁葱,稻盛和夫先生是世界著名實(shí)業(yè)家、哲學(xué)家贰剥、暢銷作家倾剿,創(chuàng)...
    風(fēng)之壹把刀閱讀 458評論 0 1
  • 技巧:可以自動調(diào)整大小的打印區(qū)域 操作步驟: 1、選取區(qū)域 - 頁面布局 - 設(shè)置打印區(qū)域蚌成。 2前痘、公式 - 名稱管...
    伊麗莎白麗閱讀 271評論 0 0