import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
public class CopyOnWriteArrayListExample {
public static void main(String[] args) {
// 创建一个 CopyOnWriteArrayList 实例
List<String> list = new CopyOnWriteArrayList<>();
// 添加元素到列表中
list.add("Apple");
list.add("Banana");
list.add("Orange");
// 遍历列表并尝试修改它
for (String fruit : list) {
System.out.println(fruit);
if ("Banana".equals(fruit)) {
// 在遍历过程中安全地添加元素
list.add("Grapes");
}
}
// 打印最终的列表内容
System.out.println("Final list: " + list);
}
}
CopyOnWriteArrayList 是 Java 中的一个线程安全的集合类,属于 java.util.concurrent
包。它的主要特点是每次进行写操作(如添加、删除元素)时,都会创建一个新的底层数组副本,而不是直接修改原来的数组。这样可以避免在遍历过程中出现并发修改异常 (ConcurrentModificationException
)。
示例代码:
CopyOnWriteArrayList
实例,并向其中添加了几个字符串元素。for-each
循环遍历列表,在遍历过程中尝试添加新元素。由于 CopyOnWriteArrayList
的特性,即使在遍历过程中修改了列表,也不会抛出 ConcurrentModificationException
。适用场景:
CopyOnWriteArrayList
是一个不错的选择。因为它在读取时不需要加锁,性能较好;但在写入时会创建新的副本,因此写操作的开销较大,适合写操作较少的场景。上一篇:java 判断字符串是否为数字
下一篇:java合并两个list集合
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站