用一段程序证明ArrayList是线程不安全的
时间: 2023-06-01 07:05:39 浏览: 81
下面的程序可以证明ArrayList是线程不安全的:
```
import java.util.ArrayList;
public class ArrayListThreadUnsafe {
public static void main(String[] args) throws InterruptedException {
ArrayList<String> arrayList = new ArrayList<>();
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 10000; i++) {
arrayList.add("a");
}
});
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 10000; i++) {
arrayList.add("b");
}
});
thread1.start();
thread2.start();
thread1.join();
thread2.join();
System.out.println(arrayList.size());
}
}
```
这个程序创建了两个线程分别往同一个ArrayList中添加10000个元素,一个线程添加的是字符"a",另一个线程添加的是字符"b"。最后输出ArrayList中元素的数量。运行这个程序会得到不同的输出结果,因为ArrayList是线程不安全的,两个线程同时访问ArrayList有可能导致数据不一致。