Самый простой способ получить синхронизированную версию java.util.Set будет использовать Collections.synchronizedSet() так:Является ли конструктор-копия синхронизированной сетки безопасной?
Set mySyncSet = Collections.synchronizedSet(new HashSet());
Java API говорит об этом новом объекте, который:
Крайне важно, чтобы пользователь вручную синхронизировать возвращаемый набор при переборе над ним
Мой вопрос, если я создаю копию этого Set используя конструктор копирования, как это:
Set mySetCopy = new HashMap(mySyncSet);
Wil это поточно-? (Не HashMap конструктор с помощью итерации, чтобы получить членов Set в конце концов?) Или я должен вручную синхронизировать работу, как это ?:
Set mySetCopy;
synchronized(mySyncSet) {
mySetCopy = new HashMap(mySyncSet);
}
'Collections.synchronized *()' почти полностью бесполезен и не должен использоваться. – SLaks
http://stackoverflow.com/a/12182099/34397 – SLaks
@SLaks Я не согласен с тем, что встроенные в синхронизацию коллекции Java полностью бесполезны. Это зависит только от необходимой вам гранулярности (или предпочитает). – RudolphEst