- 使用的方法:
Collections.synchronizedList(List<T> list)
方法。
- 代码示例:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ThreadSafeListExample {
public static void main(String[] args) {
List<String> arrayList = new ArrayList<>();
arrayList.add("element1");
arrayList.add("element2");
List<String> threadSafeList = Collections.synchronizedList(arrayList);
}
}
- 原理简述:
Collections.synchronizedList
方法返回的是一个SynchronizedRandomAccessList
(如果传入的列表实现了RandomAccess
接口)或SynchronizedList
类的实例,这两个类都是Collections
类的静态内部类。这些内部类在方法调用时,会通过synchronized
关键字对列表对象本身进行同步,从而保证在多线程环境下,对列表的操作是线程安全的。例如,在调用add
方法时,会在同步块中执行实际的添加操作,确保同一时间只有一个线程可以修改列表,避免数据不一致等问题。