【发布时间】:2014-07-25 03:26:20
【问题描述】:
我正在使用 ArrayList,如果多个线程尝试在不同步的情况下访问同一个列表,我想要一个异常示例?我在单线程应用程序中完成了此操作,如果我们在迭代时从列表中删除一个元素,它会抛出 ConcurrentModificationExceptoin 但我想在多线程环境中实现相同的目标。如果有人能给我一个例子,将不胜感激?
package com.test2;
public class ThreadTest extends Thread {
List list = new ArrayList<String>();
@Override
public void run() {
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
list.add("6");
list.add("7");
list.add("8");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
public static void main(String[] args) {
Thread th1 = new ThreadTest();
Thread th2 = new ThreadTest();
Thread th3 = new ThreadTest();
th1.start();
th2.start();
th3.start();
try {
th1.join();
th2.join();
th3.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
【问题讨论】:
-
最好也分享您的代码。
-
您是在问如何解决这个 ConcurrentModificationExceptoin 问题?
-
Braj : 我在问如何在多线程环境中获取异常
-
就像你在单线程环境中做的那样。
-
你可能想要一个
for(int i=0; i<1000000; i++) { list.add(i); },而不是只有 8 个元素并希望创建一个并发线程问题。
标签: java multithreading collections