我正在阅读B. Goetz Java并发在pratcice中并且有关于所谓的对象所有权概念的问题。以下是他说:了解Java中的对象所有权
类通常并不拥有传递给它的方法或 构造的对象,除非该法旨在明确转让(传递的对象 所有权,如同步采集 包装厂方法)。
Collections.synchronizedCollection(Collection) source是:
public static <T> Collection<T> More ...synchronizedCollection(Collection<T> c) {
return new SynchronizedCollection<T>(c);
}
其中SynchornizedCollection的构造是:
SynchronizedCollection(Collection<E> c) {
if (c==null)
throw new NullPointerException();
this.c = c;
mutex = this;
}
所以,如果我们把这种方法如下:
List<Date> lst;
//initialize the list
Collection<Date> synchedLst = Collections.syncrhonizedCollection(lst);
//modify lst's content
我们可以修改列表的内容稍后,所以我会说同步包装具有共享所有权。
这是什么问题?