并发修改异常处理
问题:
迭代时遇到并发修改异常一个列表,即使似乎没有并发修改
实现:
提供的代码同时创建一个列表和一个列表迭代器。然后,它在迭代列表时将元素添加到列表中,从而导致异常。
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); } }
解决方案:
要避免该异常,请修改代码如下:
import java.util.*; public class SomeClass { public static void main(String[] args) { List<String> s = new ArrayList<>(); for(String a : args) s.add(a); ListIterator<String> it = s.listIterator(); if(it.hasNext()) { String item = it.next(); } System.out.println(s); } }
在此修改后的代码中,列表迭代器是在所有元素添加到列表后创建的。这确保了列表在迭代器的创建和使用之间不会被修改。
以上是迭代和修改列表时如何避免ConcurrentModificationException?的详细内容。更多信息请关注PHP中文网其他相关文章!