标签:
public class ConcurrentModificationExceptionTest {
public static void main(String[] args) {
// 初始化包含0-9共10个Integer对象的ArrayList;
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
list.add(i);
}
for (int i : list) { // 删除第一个元素后,此处将出现ConcurrentModifactionException
list.remove(i);
}
}
}
public class ConcurrentModificationExceptionTest {
static List<Integer> list = new ArrayList<Integer>();
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
list.add(i);
}
new Thread() {
public void run() {
Iterator<Integer> it = list.iterator();
while (it.hasNext()) {
try {
Thread.sleep(50L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(it.next());//出现ConcurrentModificationException异常
}
}
}.start();
for (int i = 10; i < 20; i++) {
try {
Thread.sleep(50L);
} catch (InterruptedException e) {
e.printStackTrace();
}
list.add(i);
}
}
}
java中非线程安全的Collection子类均采用这种机制来阻止多线程下对它的修改,这种机制称为Fast-Fail。
ConcurrentModificationException
标签:
原文地址:http://blog.csdn.net/zhaocong89/article/details/51333291