×

java map遍历开启多线程问题

java map遍历开启多线程问题(Java 多线程 MAP 同步)

admin admin 发表于2023-12-06 16:58:15 浏览37 评论0

抢沙发发表评论

“java map遍历开启多线程问题”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看java map遍历开启多线程问题(Java 多线程 MAP 同步)!

本文目录

Java 多线程 MAP 同步

1: 有循环操作时,所有对map操作放到synchronized 块里。synchronized (map) {//操作}2:没有循环操作时可以直接使用这个方法,然后象普通map一样使用就行。 Collections.synchronizedMap(new HashMap());

关于java多线程操作同一个map,问为什么有时获取不到map里面的值

多个线程同时访问一个变量的时候会出现线程安全问题 ,解决办法 同步synchronized 就可以了

java问题 如图,同样是Map集合的遍历为什么左图进行操作时报错了,右图没有报错,求大神

你好!

两个运行环境不同,是造成代码运行不同的主要原因。

左图应为jdk1.7或以下版本,右图为jdk1.8。

  • ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。

  • 产生的原因:迭代器是依赖于集合而存在的,在判断成功后,集合的中新添加了元素,而迭代器却不知道,所以就报错了,这个错叫并发修改异常。简单描述就是:迭代器遍历元素的时候,通过集合是不能修改元素的。

jdk1.8中解决了之前HashMap扩容引发的线程不安全,但它仍然属于非线程安全的。

将HashMap替换为ConcurrentHashMap,可以解决环境问题所引起的问题。

希望对你有帮助!

以上就是我们为大家找到的有关“java map遍历开启多线程问题(Java 多线程 MAP 同步)”的所有内容了,希望可以帮助到你。如果对我们网站的其他内容感兴趣请持续关注本站。