CopyOnWriteArrayList使用案例
时间: 2023-12-09 21:27:53 浏览: 82
CopyOnWriteArrayList 是 Java 中的线程安全的 List 实现类,它通过在修改操作时创建一个新的副本来实现线程安全。这意味着当我们对 CopyOnWriteArrayList 进行修改操作时,会创建一个新的底层数组并进行修改,而原始数组保持不变。这样可以保证在修改期间,其他线程可以继续读取原始数组的内容,从而避免了读写冲突。
CopyOnWriteArrayList 的使用场景是多线程环境下的读多写少的情况。它适用于读操作远远多于写操作的场景,例如缓存、观察者模式等。
下面是一个使用 CopyOnWriteArrayList 的简单示例:
```java
import java.util.concurrent.CopyOnWriteArrayList;
public class CopyOnWriteArrayListExample {
private static CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
public static void main(String[] args) {
// 添加元素到列表
list.add("Java");
list.add("Python");
list.add("C++");
// 创建并启动多个线程同时读取列表元素
for (int i = 0; i < 5; i++) {
new Thread(() -> {
for (String element : list) {
System.out.println(element);
}
}).start();
}
// 创建并启动一个线程修改列表元素
new Thread(() -> {
list.add("Go");
list.remove("Java");
}).start();
}
}
```
在上述示例中,我们创建了一个 CopyOnWriteArrayList,并向列表添加了三个元素。然后,我们创建了多个线程同时读取列表的元素。同时,我们也创建了一个线程修改列表的元素。由于 CopyOnWriteArrayList 的特性,读取操作不会被修改操作影响,因此可以保证线程安全。
阅读全文