国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

lieeps / 2894人閱讀

摘要:為了解決這個問題設計了一個閾值,其值為容量的,當所用容量超過了閾值后,就會自動擴充其容量。如果條件競爭發生了,那么就會產生死循環了。

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

為了解決這個問題,HashMap設計了一個閾值,其值為容量的0.75,當HashMap所用容量超過了閾值后,就會自動擴充其容量。

在多線程的情況下,當重新調整HashMap大小的時候,就會存在條件競爭,因為如果兩個線程都發現HashMap需要重新調整大小了,它們會同時試著調整大小。在調整大小的過程中,存儲在鏈表中的元素的次序會反過來,因為移動到新的bucket位置的時候,HashMap并不會將元素放在鏈表的尾部,而是放在頭部,這是為了避免尾部遍歷。如果條件競爭發生了,那么就會產生死循環了。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75156.html

相關文章

  • 【面試】Java相關

    摘要:可能會持有相同的值對象但鍵對象必須是唯一的。當有新任務到達時,線程池沒有線程則創建線程處理,處理完成后該線程緩存秒,過期后回收,線程過期前有新任務到達時,則使用緩存的線程來處理。解決死鎖問題的三種方法預防死鎖檢測死鎖及避免死鎖。 最近辭職準備面試,順便整理一下面試題分享給大家,如有錯誤歡迎指出 01. 你對面向對象思想的理解? 面向對象編程簡稱OOP,是開發程序的一種方法、思想。面向...

    icattlecoder 評論0 收藏0
  • 超詳細Java面試題總結(二)之Java基礎知識篇

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

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

    摘要:的簡稱,運行環境,為的運行提供了所需環境。分割字符串,返回一個分割后的字符串數組。線程安全是線程安全的,而是非線程安全的。迭代器取代了集合框架中的,迭代器允許調用者在迭代過程中移除元素。 本文分為十九個模塊,分別是:?Java 基礎、容器、多線程、反射、對象拷貝、Java Web 、異常、網絡、設計模式、Spring/Spring MVC、Spring Boot/Spring Clou...

    hufeng 評論0 收藏0
  • 第10章:并發和分布式編程 10.1并發性和線程安全

    摘要:并發模塊本身有兩種不同的類型進程和線程,兩個基本的執行單元。調用以啟動新線程。在大多數系統中,時間片發生不可預知的和非確定性的,這意味著線程可能隨時暫停或恢復。 大綱 什么是并發編程?進程,線程和時間片交織和競爭條件線程安全 策略1:監禁 策略2:不可變性 策略3:使用線程安全數據類型 策略4:鎖定和同步 如何做安全論證總結 什么是并發編程? 并發并發性:多個計算同時發生。 在現代...

    instein 評論0 收藏0

發表評論

0條評論

lieeps

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<