Назад к вопросам
Simbirsoft
Junior — Middle
70
Объясните принцип работы и особенности CopyOnWriteArrayList в Java
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
CopyOnWriteArrayList — это потокобезопасная реализация интерфейса List в Java, которая использует стратегию копирования при записи (copy-on-write).
Принцип работы:
- При каждой операции изменения (добавление, удаление, обновление) создаётся новая копия внутреннего массива.
- Чтение происходит без блокировок, напрямую из текущего массива.
Особенности:
- Отлично подходит для сценариев с частыми чтениями и редкими изменениями.
- Высокая производительность чтения за счёт отсутствия блокировок.
- Изменения дорогостоящи из-за копирования всего массива.
- Итераторы не выбрасывают ConcurrentModificationException и всегда работают с неизменной копией данных на момент создания.
Пример использования:
CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
list.add("A");
list.add("B");
for (String s : list) {
System.out.println(s);
}
list.add("C"); // создаст новую копию массива
Такой список удобен, например, для хранения подписчиков на события, где добавление/удаление происходит редко, а уведомления — часто.