Я читаю 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 «s является:
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
мы могли бы изменить содержимое списка позже, так что Я бы сказал, что синхронизированные обертки имеют совместное владение.
Что не так с этим?