我正在閱讀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
我們可以修改列表的內容稍後,所以我會說同步包裝具有共享所有權。
這是什麼問題?