证明ArrayList是一个线程不安全的
时间: 2023-06-01 16:04:55 浏览: 65
集合。
ArrayList是一个线程不安全的集合。多个线程同时对ArrayList进行操作时,可能会导致数据错乱或者异常。因此,在多线程环境下应该使用线程安全的集合或者对ArrayList进行加锁保证线程安全。
相关问题
证明ArrayList是线程不安全的
ArrayList是线程不安全的,原因是它不是同步的。在多线程环境下,如果有多个线程同时对ArrayList进行增删操作会导致数据不一致的问题。如果需要在多线程环境下使用ArrayList,可以使用Collections.synchronizedList方法将它转化为同步的List。另外,还可以使用线程安全的List实现,比如CopyOnWriteArrayList。
用一段程序证明ArrayList是线程不安全的
下面的程序可以证明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有可能导致数据不一致。