原文: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