Java 类集合如何将列表/集合转换为同步对象?通过什么机制?

Java 类集合如何将列表/集合转换为同步对象?通过什么机制?,java,collections,synchronized,Java,Collections,Synchronized,因此,我知道如何在Collections类中调用静态方法来创建一个列表,该列表是以前创建的,现在可以同步了。但我想知道,人们是如何做到这一点的 我知道有两种方法可以使对象同步(同步的方法和块),但集合的方式似乎并非如此,它将“现有”对象转换为同步对象。有什么想法吗 集合。synchronizedList()不返回原始列表。它返回一个新的List实例,该实例包装原始List并为所有List方法(即代理)委托给它 此代理具有以下方法: @Override public synchronized T

因此,我知道如何在Collections类中调用静态方法来创建一个列表,该列表是以前创建的,现在可以同步了。但我想知道,人们是如何做到这一点的


我知道有两种方法可以使对象同步(同步的方法和块),但集合的方式似乎并非如此,它将“现有”对象转换为同步对象。有什么想法吗

集合。synchronizedList()不返回原始列表。它返回一个新的List实例,该实例包装原始List并为所有List方法(即代理)委托给它

此代理具有以下方法:

@Override
public synchronized T get(int index) {
    return originalList.get(index);
}

源代码可用,并随JDK提供。看看吧。

源代码在这里。这有点复杂,但您可以很容易地看到它是围绕原始列表实例的包装器类。