成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

HashMap是非線程安全的,那么原因是什么呢?(HashMap的死鎖)

lieeps / 2983人閱讀

摘要:為了解決這個(gè)問(wèn)題設(shè)計(jì)了一個(gè)閾值,其值為容量的,當(dāng)所用容量超過(guò)了閾值后,就會(huì)自動(dòng)擴(kuò)充其容量。如果條件競(jìng)爭(zhēng)發(fā)生了,那么就會(huì)產(chǎn)生死循環(huán)了。

由于HashMap的容量是有限的,如果HashMap中的數(shù)組的容量很小,假如只有2個(gè),那么如果要放進(jìn)10個(gè)keys的話,碰撞就會(huì)非常頻繁,此時(shí)一個(gè)O(1)的查找算法,就變成了鏈表遍歷,性能變成了O(n),這是Hash表的缺陷。

為了解決這個(gè)問(wèn)題,HashMap設(shè)計(jì)了一個(gè)閾值,其值為容量的0.75,當(dāng)HashMap所用容量超過(guò)了閾值后,就會(huì)自動(dòng)擴(kuò)充其容量。

在多線程的情況下,當(dāng)重新調(diào)整HashMap大小的時(shí)候,就會(huì)存在條件競(jìng)爭(zhēng),因?yàn)槿绻麅蓚€(gè)線程都發(fā)現(xiàn)HashMap需要重新調(diào)整大小了,它們會(huì)同時(shí)試著調(diào)整大小。在調(diào)整大小的過(guò)程中,存儲(chǔ)在鏈表中的元素的次序會(huì)反過(guò)來(lái),因?yàn)橐苿?dòng)到新的bucket位置的時(shí)候,HashMap并不會(huì)將元素放在鏈表的尾部,而是放在頭部,這是為了避免尾部遍歷。如果條件競(jìng)爭(zhēng)發(fā)生了,那么就會(huì)產(chǎn)生死循環(huán)了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/75156.html

相關(guān)文章

  • 【面試】Java相關(guān)

    摘要:可能會(huì)持有相同的值對(duì)象但鍵對(duì)象必須是唯一的。當(dāng)有新任務(wù)到達(dá)時(shí),線程池沒(méi)有線程則創(chuàng)建線程處理,處理完成后該線程緩存秒,過(guò)期后回收,線程過(guò)期前有新任務(wù)到達(dá)時(shí),則使用緩存的線程來(lái)處理。解決死鎖問(wèn)題的三種方法預(yù)防死鎖檢測(cè)死鎖及避免死鎖。 最近辭職準(zhǔn)備面試,順便整理一下面試題分享給大家,如有錯(cuò)誤歡迎指出 01. 你對(duì)面向?qū)ο笏枷氲睦斫猓?面向?qū)ο缶幊毯?jiǎn)稱OOP,是開(kāi)發(fā)程序的一種方法、思想。面向...

    icattlecoder 評(píng)論0 收藏0
  • 超詳細(xì)Java面試題總結(jié)(二)之Java基礎(chǔ)知識(shí)篇

    摘要:超詳細(xì)的面試題總結(jié)一之基本知識(shí)多線程和虛擬機(jī)創(chuàng)建線程有幾種不同的方式你喜歡哪一種為什么繼承類實(shí)現(xiàn)接口應(yīng)用程序可以使用框架來(lái)創(chuàng)建線程池實(shí)現(xiàn)接口。死亡線程方法執(zhí)行結(jié)束,或者因異常退出了方法,則該線程結(jié)束生命周期。死亡的線程不可再次復(fù)生。 超詳細(xì)的Java面試題總結(jié)(一)之Java基本知識(shí) 多線程和Java虛擬機(jī) 創(chuàng)建線程有幾種不同的方式?你喜歡哪一種?為什么? 繼承Thread類 實(shí)現(xiàn)R...

    wangjuntytl 評(píng)論0 收藏0
  • Java 最常見(jiàn) 200+ 面試題全解析:面試必備(附答案)

    摘要:的簡(jiǎn)稱,運(yùn)行環(huán)境,為的運(yùn)行提供了所需環(huán)境。分割字符串,返回一個(gè)分割后的字符串?dāng)?shù)組。線程安全是線程安全的,而是非線程安全的。迭代器取代了集合框架中的,迭代器允許調(diào)用者在迭代過(guò)程中移除元素。 本文分為十九個(gè)模塊,分別是:?Java 基礎(chǔ)、容器、多線程、反射、對(duì)象拷貝、Java Web 、異常、網(wǎng)絡(luò)、設(shè)計(jì)模式、Spring/Spring MVC、Spring Boot/Spring Clou...

    hufeng 評(píng)論0 收藏0
  • 第10章:并發(fā)和分布式編程 10.1并發(fā)性和線程安全

    摘要:并發(fā)模塊本身有兩種不同的類型進(jìn)程和線程,兩個(gè)基本的執(zhí)行單元。調(diào)用以啟動(dòng)新線程。在大多數(shù)系統(tǒng)中,時(shí)間片發(fā)生不可預(yù)知的和非確定性的,這意味著線程可能隨時(shí)暫?;蚧謴?fù)。 大綱 什么是并發(fā)編程?進(jìn)程,線程和時(shí)間片交織和競(jìng)爭(zhēng)條件線程安全 策略1:監(jiān)禁 策略2:不可變性 策略3:使用線程安全數(shù)據(jù)類型 策略4:鎖定和同步 如何做安全論證總結(jié) 什么是并發(fā)編程? 并發(fā)并發(fā)性:多個(gè)計(jì)算同時(shí)發(fā)生。 在現(xiàn)代...

    instein 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<