摘要:為了解決這個(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
摘要:可能會(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ā)程序的一種方法、思想。面向...
摘要:超詳細(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...
摘要:的簡(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...
摘要:并發(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)代...
閱讀 1166·2021-10-14 09:42
閱讀 1492·2021-09-22 15:11
閱讀 3394·2019-08-30 15:56
閱讀 1326·2019-08-30 15:55
閱讀 3694·2019-08-30 15:55
閱讀 944·2019-08-30 15:44
閱讀 2094·2019-08-29 17:17
閱讀 2138·2019-08-29 15:37