并发修改异常 [英] Concurrent Modification exception

查看:32
本文介绍了并发修改异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一小段代码,它给了我并发修改异常.我不明白为什么我一直得到它,即使我没有看到正在执行的任何并发修改.

I have this little piece of code and it gives me the concurrent modification exception. I cannot understand why I keep getting it, even though I do not see any concurrent modifications being carried out.

import java.util.*;

public class SomeClass {
    public static void main(String[] args) {
        List<String> s = new ArrayList<>();
        ListIterator<String> it = s.listIterator();

        for (String a : args)
            s.add(a);

        if (it.hasNext())
            String item = it.next();

        System.out.println(s);
    }
}

推荐答案

为了避免 ConcurrentModificationException,你应该这样写你的代码:

To avoid the ConcurrentModificationException, you should write your code like this:

import java.util.*;

public class SomeClass {

    public static void main(String[] args) {
        List<String> s = new ArrayList<String>();

        for(String a : args)
            s.add(a);

        ListIterator<String> it = s.listIterator();    
        if(it.hasNext()) {  
            String item = it.next();   
        }  

        System.out.println(s);

    }
}

java.util.ListIterator 允许您在迭代期间修改列表,但不能在创建和使用之间修改.

A java.util.ListIterator allows you to modify a list during iteration, but not between creating it and using it.

这篇关于并发修改异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆