import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
import java.util.concurrent.CopyOnWriteArrayList;
public class ThreadSafeListExample {
// 使用 Collections.synchronizedList 包装 ArrayList 实现线程安全
public static List<String> synchronizedListExample() {
List<String> list = Collections.synchronizedList(new ArrayList<>());
// 在多线程环境下使用时,需要手动同步对集合的遍历操作
synchronized (list) {
for (String element : list) {
// 处理元素
}
}
return list;
}
// 使用 CopyOnWriteArrayList 实现线程安全
public static List<String> copyOnWriteArrayListExample() {
List<String> list = new CopyOnWriteArrayList<>();
// CopyOnWriteArrayList 在写操作时会复制整个数组,适用于读多写少的场景
list.add("Element 1");
list.add("Element 2");
return list;
}
public static void main(String[] args) {
List<String> syncList = synchronizedListExample();
List<String> cowList = copyOnWriteArrayListExample();
// 示例输出
System.out.println("Synchronized List: " + syncList);
System.out.println("CopyOnWriteArrayList: " + cowList);
}
}
Collections.synchronizedList:
Collections.synchronizedList 是 Java 提供的一种方式,可以将一个非线程安全的 List 包装成线程安全的 List。CopyOnWriteArrayList:
CopyOnWriteArrayList 是 Java 并发包 (java.util.concurrent) 中提供的线程安全的 List 实现。这两个方法都可以实现线程安全的 List,具体选择取决于应用场景。
上一篇:java math.pow
下一篇:java 发送post请求
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站