MST

星途 面试题库

面试题:Java中Collections工具类如何创建线程安全的List集合

在Java中,使用Collections工具类创建线程安全的List集合通常会用到哪个方法?请写出代码示例展示如何将一个普通的ArrayList转换为线程安全的List,并简述该方法的原理。
12.7万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 使用的方法Collections.synchronizedList(List<T> list)方法。
  2. 代码示例
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);
    }
}
  1. 原理简述Collections.synchronizedList方法返回的是一个SynchronizedRandomAccessList(如果传入的列表实现了RandomAccess接口)或SynchronizedList类的实例,这两个类都是Collections类的静态内部类。这些内部类在方法调用时,会通过synchronized关键字对列表对象本身进行同步,从而保证在多线程环境下,对列表的操作是线程安全的。例如,在调用add方法时,会在同步块中执行实际的添加操作,确保同一时间只有一个线程可以修改列表,避免数据不一致等问题。