java.util.ConcurrentModificationException 解决办法

在使用iterator.hasNext()操作迭代器的时候,如果此时迭代的对象发生改变,比如插入了新数据,或者有数据被删除。 则使用会报以下异常: Java.util.ConcurrentModificationException

解决办法:

  1. 通过Iterator修改Hashtable while(it.hasNext()) { Object ele = it.next(); it.remove(); }
  2. 根据实际程序,您自己手动给Iterator遍历的那段程序加锁,给修改HashMap的那段程序加锁。
  3. 使用“ConcurrentHashMap”替换HashMap,ConcurrentHashMap会自己检查修改操作,对其加锁,也可针对插入操作。 import java.util.concurrent.*;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏noteless

[十七]JavaIO之CharArrayReader 和 CharArrayWriter

他们的逻辑类似ByteArrayInputStream ByteArrayOutputStream,只不过一个是字节,一个是字符而已

1393
来自专栏我是业余自学C/C++的

redis_3.0.7_sds.c_sdsempty_so_on

1053
来自专栏数据科学

redis流计算

使用了tornado的异步和streamz的流处理两个库,需要redis 5.0以上版本

2305
来自专栏nnngu

数据结构06 队列

上一篇讲了栈,这一篇要讲的是我们常用的队列,我会从以下几个方面进行总结。 1、什么是队列  2、队列的存储结构 3、队列的常用操作及实现代码 1、什么是队列  ...

2898
来自专栏Golang语言社区

Go Channel 应用模式(二)

eapache/channels提供了一些channel应用模式的方法,比如上面的扇入扇出模式等。

1593
来自专栏JavaQ

聊聊同步辅助类CountDownLatch

本篇聊聊同步辅助类CountDownLatch,涉及内容基于JDK7。 1.概述 CountDownLatch允许一个或者多个线程一直等待,直到一组其它操作执行...

3195
来自专栏Golang语言社区

Golang中container/list包中的坑

但是list包中大部分对于e *Element进行操作的元素都可能会导致程序崩溃,其根本原因是e是一个Element类型的指针,当然其也可能为nil,但是gol...

38514
来自专栏漫漫前端路

巧用 TypeScript (一)

TypeScript 提供函数重载的功能,用来处理因函数参数不同而返回类型不同的使用场景,使用时,只需为同一个函数定义多个类型即可,简单使用如下所示:

2942
来自专栏我的小碗汤

Go语言常见坑

这里列举的Go语言常见坑都是符合Go语言语法的, 可以正常的编译, 但是可能是运行结果错误, 或者是有资源泄漏的风险。

743
来自专栏java学习

最详细的XML操作学习笔记

以上这种数据, 如果通过我们学习的集合来存储的话, 需要通过多个集合的嵌套使用.

2112

扫码关注云+社区

领取腾讯云代金券