Я вызываю только addAll и освобождаюсь от списка, но нуждаюсь в потокобезопасности, есть ли существующий список для этого? ThanksКакой список java подходит для потокобезопасности на addAll и очищается
ответ
Список не синхронизирован. Таким образом, он не является потокобезопасным. Если вы хотите как потокобезопасный означает, что можно сделать список как потокобезопасный, вы можете использовать
список, созданный с использованием Collections.synchronizedList(List list)
будет удовлетворять эти требования, при условии что Синхронизированный список - это целевой объект в вызове addAll(...)
, и никогда не параметр.
Если синхронизированный список (созданный, как указано выше) является аргументом, то проблема заключается в том, что addAll(list)
выполняет итерацию аргумента list
, а итерация синхронизированного списка не является атомарной. Если другой поток обновляет list
, пока он добавляется, вы можете получить ConcurrentModificationException
.
Если вам нужно сделать addAll(list)
в поточно-моды в условиях одновременных обновлений для list
, то вам нужно сделать list
CopyOnWriteArrayList
.
Существует реализация параллельного списка в java.util.concurrent. CopyOnWriteArrayList в частности.
Если вы хотите использовать список exsting, как синхронизируются один, пойти на Collections.synchronizedList(list)
или вы создаете список целевой, то вы можете пойти на CopyOnWriteArrayList
CopyOnWriteArrayList является одновременно заменой synchronizedList, что обеспечивает лучший параллелизм в некоторых типичных ситуациях & устраняет необходимость блокировки или копирования коллекции во время итерации.
Копирование на коллекциях записей обеспечивает безопасность потоков от того факта, что как эффективно неизменяемый объект публикуется должным образом, дальнейшая синхронизация не требуется при доступе к нему. Они реализуют изменчивость, создавая &, повторно публикуя новую копию коллекции каждый раз, когда она изменяется. Коллекция не бросает ConcurrentModificationException, независимо от последующих изменений.
- 1. Как реализовать список потокобезопасности?
- 2. Scala метод список addall
- 3. Какой вариант подходит для замены Java-апплета?
- 4. Java: Какой объект более подходит?
- 5. java generics и метод addAll
- 6. Groovy addAll составляет список списков
- 7. addAll() реализация - Java
- 8. Смутно о синхронизации и потокобезопасности? java
- 9. Выпадающий список не очищается
- 10. Java Collection addAll сложность
- 11. Java-8 addAll Objects
- 12. Какой инструмент автоматизации подходит для регрессионного тестирования
- 13. Какой CI подходит для .Net
- 14. Java и метод addAll для списка <Character>
- 15. Какой веб-сервер java наиболее подходит здесь?
- 16. Метод для добавления в список - Android-приложение? какой метод подходит?
- 17. Какой CMS подходит для меня?
- 18. Об ошибках и потокобезопасности
- 19. Функция перегрузки addAll в Java
- 20. Какой макет подходит для стола?
- 21. Какой подход подходит для US ListBox/DropDownList
- 22. Какой шаблон подходит между фасадом и DAO?
- 23. addAll метод в списке java
- 24. Какой класс подходит для прослушивания музыкального файла?
- 25. Какой способ использовать CGContext для рисования подходит?
- 26. Какой дистрибутив Linux лучше всего подходит для веб-приложений Java?
- 27. Какой язык больше подходит для компьютерной графики
- 28. Какой PRNG подходит для функционального использования?
- 29. Какой тип коллекции подходит для веб-сервисов на .Net?
- 30. IDisposable, ObjectDisposedException и типы потокобезопасности
«поточно-безопасный» - это большой термин. Если два потока одновременно называют addAll, достаточно ли этого, чтобы не получить «ConcurrentModificationException», или вам нужны все элементы из 1-го потока, добавленного до элементов со второго? – Mureinik
Вам действительно нужно добавить более подробную информацию о сценарии, если вы хотите получить высококачественный, конкретный ответ. – biziclop