暂无图片
暂无图片
1
暂无图片
暂无图片
1
暂无图片

java常见集合的并发修改异常(Java.util.ConcurrentModificationException)解决方案

一叶扁舟 2022-05-11
1667

ArrayList、HashSet、HashMap是我们常用的三个集合,但是如果同一个集合对象被多个线程调用时,很容易出现Java.util.ConcurrentModificationException并发修改异常

WechatIMG1292.png

一、解决ArrayList并发问题

有如下解决方案

Vector Collections.synchronizedList() CopyOnWriteArrayList()
原理 synchronized synchronized Lock
相对性能
public static void main(String[] args) { /** * List<String> list = new ArrayList<>(); 不安全 * 【解决方案】 * 1、List<String> list = Collections.synchronizedList(new ArrayList<>()); * 2、List<String> list = new Vector<>(); * 3、List<String> list = new CopyOnWriteArrayList<>(); */ List<String> list = new CopyOnWriteArrayList<>(); for (int i = 0; i < 20; i++) { new Thread(() -> { list.add(UUID.randomUUID().toString().substring(0, 5)); System.out.println(list); }).start(); } }
复制

二、解决HashSet并发问题

有如下解决方案

Collections.synchronizedSet() CopyOnWriteArraySet()
原理 synchronized Lock
相对性能
public static void main(String[] args) { /** * Set<String> set = new HashSet<>(); 不安全 * 【解决方案】 * 1、Set<String> set = Collections.synchronizedSet(new HashSet<>()); * 2、Set<String> set = new CopyOnWriteArraySet<>(); */ Set<String> set = new CopyOnWriteArraySet<>(); for (int i = 0; i < 20; i++) { new Thread(() -> { set.add(UUID.randomUUID().toString().substring(0, 5)); System.out.println(set); }).start(); } }
复制

三、解决HashMap并发问题

有如下解决方案

HashTable Collections.synchronizedMap() ConcurrentHashMap()
原理 synchronized synchronized Lock
相对性能
public static void main(String[] args) { /** * Map<String> map = new HashMap<>(); 不安全 * 【解决方案】 * 1、 * 2、Map<String, String> map = Collections.synchronizedMap(new HashMap<>()); * 3、Map<String, String> set = new ConcurrentHashMap<>(); */ Map<String, String> map = new ConcurrentHashMap<>(); for (int i = 0; i < 20; i++) { new Thread(() -> { }).start(); } }
复制


好啦,以上!

最后修改时间:2022-05-13 08:55:07
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

墨天轮福利君
暂无图片
2年前
评论
暂无图片 0
您好,您的文章已入选墨力原创作者计划合格奖,10墨值奖励已经到账请查收! ❤️我们还会实时派发您的流量收益。
2年前
暂无图片 点赞
评论