原文:ConcurrentHashMap允許一邊遍歷一邊更新,而用HashMap則會報線程安全問題

ConcurrentHashMap線程安全的,允許一邊更新 一邊遍歷,也就是說在對象遍歷的時候,也可以進行remove,put操作,且遍歷的數據會隨着remove,put操作產出變化,而如果用HashMap則會報線程安全問題。 以下例子分別使用HashMap ConcurrentHashMap HashTable在遍歷的同時刪除, 情況一 使用HashMap進行遍歷的同時刪除 HashMap不能一 ...

2021-02-24 11:27 0 476 推薦指數:

查看詳情

HashMap、HashTable 和 ConcurrentHashMap 線程安全問題

一、HashMap HashMap線程安全的。 JDK 1.7 HashMap 采用數組 + 鏈表的數據結構,多線程背景下,在數組擴容的時候,存在 Entry 鏈死循環和數據丟失問題。 JDK 1.8 HashMap 采用數組 + 鏈表 + 紅黑二叉樹的數據結構,優化了 1.7 中數組 ...

Thu Aug 29 05:34:00 CST 2019 0 432
List如何一邊遍歷一邊刪除?

1.新手常犯的錯誤 可能很多新手(包括當年的我,哈哈)第一時間想到的寫法是下面這樣的: 然后滿懷信心的去運行,結果竟然拋java.util.ConcurrentModificatio ...

Sat Apr 18 02:50:00 CST 2020 0 1798
HashMap線程安全問題

有過java開發經驗的從都知道 ,HashMap不是線程安全的,今天我打算用代碼來試驗下它的不安全性 代碼 : 我用20個線程利用一個同步計數器往map中put數據,結果 從結果來看,map被修改了20次,但是map中的數據只有18個,說明在put ...

Sat Aug 22 04:16:00 CST 2020 0 648
JAVA List 一邊遍歷一邊刪除元素

JAVA List 一邊遍歷一邊刪除元素,報java.util.ConcurrentModificationException異常 2015年02月10日 14:42:49 zhanzkw 閱讀數:3016更多 個人分類: JAVA ...

Wed Oct 31 01:25:00 CST 2018 0 1629
ArrayList一邊遍歷一邊刪除元素,可能會產生bug!

有時候我們需要對ArrayList進行遍歷,然后根據條件刪除元素,就像下面這樣: 然后會報如下的錯誤: 我們看一下生成的class文件的反編譯的結果: 可以看到,這里遍歷用的是ArrayList實現的迭代器Iterator的hasNext()、next()方法,但是刪除用的卻是 ...

Sun Apr 12 05:42:00 CST 2020 0 698
【Java面試題】List如何一邊遍歷一邊刪除?

這是最近面試時被問到的1道面試題,本篇博客對此問題進行總結分享。 1. 新手常犯的錯誤 可能很多新手(包括當年的我,哈哈)第一時間想到的寫法是下面這樣的: 然后滿懷信心的去運行,結果竟然拋java.util.ConcurrentModificationException異常了,翻譯成中文 ...

Fri Mar 20 20:04:00 CST 2020 4 9083
HashMap在1.7 1.8中的線程安全問題

HashMap線程安全主要體現在下面兩個方面: 在JDK1.7中,當並發執行擴容操作時會造成環形鏈和數據丟失的情況。 擴容逆序和環形:見上一篇文章中的頭插法以及bilibili視頻,https://www.bilibili.com/video/BV1vE411v7cR?p ...

Sun May 03 21:49:00 CST 2020 0 686
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM