Встречается на 2% собеседований по Java

Какие знаешь варианты синхронизации коллекций

В Java есть несколько способов синхронизации коллекций:

  1. Collections.synchronizedXXX()
    Оборачивает коллекцию в synchronized-обёртку:

    java
    List<String> syncList = Collections.synchronizedList(new ArrayList<>());
  2. Concurrent коллекции из java.util.concurrent
    Более эффективные потокобезопасные аналоги:

    java
    ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
    CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
  1. Вручную через synchronized
    Использование блоков синхронизации:

    java
    synchronized (myCollection) {
        myCollection.add(item);
    }
  2. Использование Lock/ReentrantLock
    Более гибкая альтернатива synchronized:

    java
    Lock lock = new ReentrantLock();
    lock.lock();
    try {
        myCollection.add(item);
    } finally {
        lock.unlock();
    }

Выбор зависит от сценария:

  • Для редких записей подойдёт Collections.synchronizedXXX()
  • Для частых операций лучше ConcurrentHashMap/CopyOnWriteArrayList
  • Для сложной логики – ручная синхронизация через Lock
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы