一文講解HashMap線程安全相關問題(上)

  • HashMap不是線程安全的,主要有以下幾個問題:

①、多線程下擴容會死循環。JDK1.7 中的 HashMap 使用的是頭插法插入元素,在多線程的環境下,擴容的時候就有可能導致出現環形鏈表,造成死循環。
在這里插入圖片描述
JDK 8 時已經修復了這個問題,擴容時會保持鏈表原來的順序。

②、多線程的put可能會導致元素的丟失,因為計算出來的位置可能會被其他線程的put覆蓋。本來哈希沖突應該用鏈表的,但多線程時由于沒有加鎖,相同位置的元素可能就被干掉了;
在這里插入圖片描述
③、put和get并發時,可能導致get為null。線程1執行put時,因為元素個數超出閾值而導致出現擴容,線程2此時執行get,就有可能出現這個問題;
在這里插入圖片描述

  • 因為線程1執行完table = newTab之后,線程2中的table此時也發生了變化,此時去get的時候當然會get到null了,因為元素還沒有轉移;

接下來說下map的同步和非同步問題

  • Hashtable 是 Map 接口的一個早期的同步實現,它的所有方法都是同步的,即每個方法都用 synchronized 關鍵字修飾,以確保線程安全。

    隨著 JDK 版本的升級,Java 提供了更好的線程安全 Map 實現,如 ConcurrentHashMap。

    如果是在單線程環境下,可以使用 HashMap。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/67770.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67770.shtml
英文地址,請注明出處:http://en.pswp.cn/web/67770.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android java系統彈窗的基礎模板

1、資源文件 app\src\main\res\layout下增加custom_pop_layout.xml 定義彈窗的控件資源。 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/…

python學習——常用的內置函數匯總

文章目錄 類型轉換函數數學函數常用的迭代器操作函數常用的其他內置函數 類型轉換函數 數學函數 常用的迭代器操作函數 實操&#xff1a; from cv2.gapi import descr_oflst [55, 42, 37, 2, 66, 23, 18, 99]# (1) 排序操作 asc_lst sorted(lst) # 升序 desc_lst sorted(l…

《解鎖AI黑科技:數據分類聚類與可視化》

在當今數字化時代&#xff0c;數據如潮水般涌來&#xff0c;如何從海量數據中提取有價值的信息&#xff0c;成為了眾多領域面臨的關鍵挑戰。人工智能&#xff08;AI&#xff09;技術的崛起&#xff0c;為解決這一難題提供了強大的工具。其中&#xff0c;能夠實現數據分類與聚類…

MySQL數據庫環境搭建

下載MySQL 官網&#xff1a;https://downloads.mysql.com/archives/installer/ 下載社區版就行了。 安裝流程 看b站大佬的視頻吧&#xff1a;https://www.bilibili.com/video/BV12q4y1477i/?spm_id_from333.337.search-card.all.click&vd_source37dfd298d2133f3e1f3e3c…

AI學習指南HuggingFace篇-Tokenizers 與文本處理

一、引言 在自然語言處理(NLP)中,文本數據的預處理是至關重要的一步。分詞器(Tokenizers)是將文本分割成單詞、短語或其他單元的工具,是文本處理的基礎。Hugging Face的Tokenizers庫提供了高效且靈活的分詞工具,支持多種預訓練模型的分詞需求。本文將深入講解Tokenizer…

如何用微信小程序寫春聯

? 生活沒有模板,只需心燈一盞。 如果笑能讓你釋然,那就開懷一笑;如果哭能讓你減壓,那就讓淚水流下來。如果沉默是金,那就不用解釋;如果放下能更好地前行,就別再扛著。 一、引入 Vant UI 1、通過 npm 安裝 npm i @vant/weapp -S --production?? 2、修改 app.json …

[SAP ABAP] 靜態斷點的使用

在 ABAP 編程環境中&#xff0c;靜態斷點通過關鍵字BREAK-POINT實現&#xff0c;當程序執行到這一語句時&#xff0c;會觸發調試器中斷程序的運行&#xff0c;允許開發人員檢查當前狀態并逐步跟蹤后續代碼邏輯 通常情況下&#xff0c;在代碼的關鍵位置插入靜態斷點可以幫助開發…

96,【4】 buuctf web [BJDCTF2020]EzPHP

進入靶場 查看源代碼 GFXEIM3YFZYGQ4A 一看就是編碼后的 1nD3x.php 訪問 得到源代碼 <?php // 高亮顯示當前 PHP 文件的源代碼&#xff0c;用于調試或展示代碼結構 highlight_file(__FILE__); // 關閉所有 PHP 錯誤報告&#xff0c;防止錯誤信息泄露可能的安全漏洞 erro…

基于深度學習的輸電線路缺陷檢測算法研究(論文+源碼)

輸電線路關鍵部件的缺陷檢測對于電網安全運行至關重要&#xff0c;傳統方法存在效率低、準確性不高等問題。本研究探討了利用深度學習技術進行輸電線路關鍵組件的缺陷檢測&#xff0c;目的是提升檢測的效率與準確度。選用了YOLOv8模型作為基礎&#xff0c;并通過加入CA注意力機…

3、從langchain到rag

文章目錄 本文介紹向量和向量數據庫向量向量數據庫 索引開始動手實現rag加載文檔數據并建立索引將向量存放到向量數據庫中檢索生成構成一條鏈 本文介紹 從本節開始&#xff0c;有了上一節的langchain基礎學習&#xff0c;接下來使用langchain實現一個rag應用&#xff0c;并稍微…

DeepSeek-R1大模型本地化部署

前言 Ollama作為一個輕量級、易上手的工具&#xff0c;可以幫助你在自己的電腦上快速部署和運行大型語言模型&#xff0c;無需依賴云端服務。通過加載各種開源模型&#xff0c;比如LLaMA、GPT-J等&#xff0c;并通過簡單的命令行操作進行模型推理和測試。 此小結主要介紹使用…

【小白學AI系列】NLP 核心知識點(五)Transformer介紹

Transformer Transformer 是一種基于自注意力機制&#xff08;Self-Attention Mechanism&#xff09;的深度學習模型&#xff0c;首次由 Vaswani 等人于 2017 年在論文《Attention is All You Need》中提出。與 RNN 和 LSTM 不同&#xff0c;Transformer 不需要依靠序列順序進…

【高級篇 / IPv6】(7.6) ? 03. 寬帶IPv6 - ADSL撥號寬帶上網配置 ? FortiGate 防火墻

【簡介】大部分ADSL撥號寬帶都支持IPv6&#xff0c;這里以ADSL撥號寬帶為例&#xff0c;演示在FortiGate防火墻上的配置方法。 準備工作 同上篇文章一樣&#xff0c;為了兼顧不熟悉FortiGate防火墻的朋友&#xff0c;我們從基礎操作進行演示&#xff0c;熟練的朋友可以跳過這一…

【Elasticsearch】_all 查詢

在 Elasticsearch 中&#xff0c;_all 查詢是一種特殊的查詢方式&#xff0c;用于在多個索引或數據流中執行搜索操作&#xff0c;而無需顯式指定每個目標索引或數據流的名稱。以下是關于 _all 查詢的詳細說明&#xff1a; _all 查詢概述 用途&#xff1a;_all 查詢允許您在多個…

Linux第104步_基于AP3216C之I2C實驗

Linux之I2C實驗是在AP3216C的基礎上實現的&#xff0c;進一步熟悉修改設備樹和編譯設備樹&#xff0c;以及學習如何編寫I2C驅動和APP測試程序。 1、AP3216C的原理圖 AP3216C集成了一個光強傳感器ALS&#xff0c;一個接近傳感器PS和一個紅外LED&#xff0c;為三合一的環境傳感…

基于單片機的盲人智能水杯系統(論文+源碼)

1 總體方案設計 本次基于單片機的盲人智能水杯設計&#xff0c;采用的是DS18B20實現杯中水溫的檢測&#xff0c;采用HX711及應力片實現杯中水里的檢測&#xff0c;采用DS1302實現時鐘計時功能&#xff0c;采用TTS語音模塊實現語音播報的功能&#xff0c;并結合STC89C52單片機作…

高清種子資源獲取指南 | ??@seedlinkbot

在如今的數字時代&#xff0c;高清影視、音樂、游戲等資源的獲取方式不斷豐富。對于追求高質量資源的用戶而言&#xff0c;一個高效的資源分享平臺至關重要。而 ??seedlinkbot 正是這樣一個便捷的資源獲取工具&#xff0c;為用戶提供高質量的種子資源索引和下載信息。 1. ??…

[paddle] 矩陣相關的指標

行列式 det 行列式定義參考 d e t ( A ) ∑ i 1 , i 2 , ? , i n ( ? 1 ) σ ( i 1 , ? , i n ) a 1 , i 1 a 2 , i 2 , ? , a n , i n det(A) \sum_{i_1,i_2,\cdots,i_n } (-1)^{\sigma(i_1,\cdots,i_n)} a_{1,i_1}a_{2,i_2},\cdots, a_{n,i_n} det(A)i1?,i2?,?,in?…

Spring Boot項目如何使用MyBatis實現分頁查詢

寫在前面&#xff1a;大家好&#xff01;我是晴空?。如果博客中有不足或者的錯誤的地方歡迎在評論區或者私信我指正&#xff0c;感謝大家的不吝賜教。我的唯一博客更新地址是&#xff1a;https://ac-fun.blog.csdn.net/。非常感謝大家的支持。一起加油&#xff0c;沖鴨&#x…

【論文筆記】Fast3R:前向并行muti-view重建方法

眾所周知&#xff0c;DUSt3R只適合做稀疏視角重建&#xff0c;與sapnn3r的目的類似&#xff0c;這篇文章以并行的方法&#xff0c;擴展了DUSt3R在多視圖重建中的能力。 abstract 多視角三維重建仍然是計算機視覺領域的核心挑戰&#xff0c;尤其是在需要跨不同視角實現精確且可…