class 集合如何将 list/set 转换为同步对象?通过什么机制?
How does class Collections turn a list/set to a synchronized object? Through what mechanism?
所以我知道如何调用 Collections 中的静态方法 class 来使之前创建的列表变得同步。但我想知道,如何做到这一点?
我知道有 2 种方法可以使对象同步(同步方法和块),但 Collections 似乎不是这样,它将一个 "existing" 对象变成一个同步一个。有任何想法吗?
Collections.synchronizedList()
不是 return 原始列表。它 return 是 List 的一个新实例,它包装了原始列表并将所有 List 方法委托给它,即代理。
此代理有
等方法
@Override
public synchronized T get(int index) {
return originalList.get(index);
}
源代码可用,JDK附带。随便看看。
所以我知道如何调用 Collections 中的静态方法 class 来使之前创建的列表变得同步。但我想知道,如何做到这一点?
我知道有 2 种方法可以使对象同步(同步方法和块),但 Collections 似乎不是这样,它将一个 "existing" 对象变成一个同步一个。有任何想法吗?
Collections.synchronizedList()
不是 return 原始列表。它 return 是 List 的一个新实例,它包装了原始列表并将所有 List 方法委托给它,即代理。
此代理有
等方法@Override
public synchronized T get(int index) {
return originalList.get(index);
}
源代码可用,JDK附带。随便看看。