Sobes.tech
Back to questions
Junior — Middle
69

Объясните принцип работы и особенности CopyOnWriteArrayList в Java

Companies where asked
SimbirsoftSimbirsoft

Answer from AI

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"); // создаст новую копию массива

Такой список удобен, например, для хранения подписчиков на события, где добавление/удаление происходит редко, а уведомления — часто.