package com.bochy.list;
import java.util.ArrayList;
import java.util.List;
public class ArrayListConcurrentProblem {
public static void main(String[] args) {
final List list = new ArrayList();
// final List list = new Vector();
for (int i = 0; i < 10000; i++) {
list.add(i);
}
System.out.println(list.size());
for (int i = 0; i < 10; i++)
new Thread() {
@Override
public void run() {
for (int i = 0; i < 1000; i++)
list.remove(0);
}
}.start();
System.out.println(list.size());
for (int i = 0; i < 10; i++)
new Thread() {
@Override
public void run() {
for (int i = 0; i < 1000; i++)
list.add(10000 * i + i);
}
}.start();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
System.out.println(list.size());
}
}
执行结果:
10000
9962
10237
原因在于:多线程并发资源