я нашел это в dos.oracle.comПочему мне нужно синхронизировать список возвращенного Collections.synchronizedList
общественного статический список synchronizedList (список List)
Возвращает синхронизированный (поточно-), который поддерживается указанным списком . Чтобы гарантировать последовательный доступ, крайне важно, чтобы весь доступ к списку поддержки выполнялся через возвращаемый список. Крайне важно, чтобы пользователь вручную синхронизировать возвращенного списка при переборе над ним:
List list = Collections.synchronizedList(new ArrayList());
...
synchronized(list) {
Iterator i = list.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}
Мой вопрос: Почему я должен синхронизировать список итерацию, если Collections.synchronizedList();
должен возвращать уже синхронизированный список?
Я просто присоединяюсь к списку в двух потоках: один поток просто добавляет, а другой поток - для получения и удаления. Какие другие классы вы рекомендуете использовать для этого сценария?
Спасибо за чтение.
я Wouldnt использовать 'Collections.synchronizedList()'. Может быть, лучше сделать синхронизацию самостоятельно в собственном коде – JIV