使用Collections.synchronizedList包装ArrayList
时间: 2024-11-07 22:09:35 浏览: 11
在Java中,`Collections.synchronizedList()`是一个工具方法,它用于同步列表操作,使得并发访问变得更加安全。当你需要在一个线程安全的方式下共享ArrayList时,可以将ArrayList作为参数传递给这个方法,返回一个新的SynchronizedList实例。
例如:
```java
import java.util.ArrayList;
import java.util.Collections;
public class SynchronizedExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
// 添加元素...
// 创建并同步list
Collections.synchronizedList(list); // 现在list的所有修改操作都是线程安全的
// 同步的集合可以直接通过索引修改
synchronized (list) {
list.add("New Element");
}
// 线程A和B同时尝试修改这个列表,会自动处理并发控制
}
}
```
然而,需要注意的是,这仅保证了对list本身操作的同步,不是对添加到list中的元素的操作。如果你需要更细粒度的锁定,可能需要考虑使用更高级的数据结构,如`ConcurrentSkipListSet`等。
阅读全文