项目场景:
springBoot项目,异步线程中对list数据进行添加。
问题描述
ArrayList在迭代的时候,如果同时对其进行修改会报错。
原因分析:
ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。
解决方案:
第一种:改为CopyOnWriteArrayList类型
由List<String> userCodes = newArrayList<>();
改为:
CopyOnWriteArrayList<String> userCodes = new CopyOnWriteArrayList<>();
第二种:synchronized实现线程同步
public static void main(String[] args) {
List<String> list = Collections.synchronizedList(new ArrayList<>());
for(int i = 0; i < 10; i++) {
new Thread(() -> {
list.add(UUID.randomUUID().toString().substring(0,8));
System.out.println(list);
}, String.valueOf(i)).start();
}
}
╭◜◝ ͡ ◜◝╮
( ˃̶͈◡˂ ̶͈ )感觉有用的话,欢迎点赞评论呀!
╰◟◞ ͜ ◟◞╯