import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
import java.util.concurrent.CopyOnWriteArrayList;
public class ThreadSafeListExample {
// 使用 Collections.synchronizedList 方法来创建线程安全的 List
public static List<String> synchronizedListExample() {
List<String> list = Collections.synchronizedList(new ArrayList<>());
// 需要注意的是,虽然 List 本身是线程安全的,但在遍历时仍然需要进行同步
synchronized (list) {
for (String element : list) {
// 操作元素
}
}
return list;
}
// 使用 CopyOnWriteArrayList 来创建线程安全的 List
public static List<String> copyOnWriteArrayListExample() {
List<String> list = new CopyOnWriteArrayList<>();
// CopyOnWriteArrayList 在写操作时会复制整个数组,因此适合读多写少的场景
list.add("element1");
list.add("element2");
return list;
}
public static void main(String[] args) {
// 示例调用
List<String> syncList = synchronizedListExample();
List<String> cowList = copyOnWriteArrayListExample();
}
}
Collections.synchronizedList
:
List
包装成线程安全的版本。List
的基本操作(如 add
, remove
, get
)是线程安全的,但在进行迭代操作时,仍然需要显式地使用 synchronized
块来确保线程安全。CopyOnWriteArrayList
:
List
实现。add
, remove
)时都会复制整个底层数组,因此它非常适合读多写少的场景。上一篇:java 字符串反转
下一篇:java中string转date
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站