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

Является ли метод put() в concrentHashMap в Java потокобезопасным

Да, метод put() в ConcurrentHashMap потокобезопасен. Он использует сегментирование (блокировка на уровне сегментов или отдельных бакетов в Java 8+), что позволяет нескольким потокам одновременно модифицировать разные части мапы без блокировки всей структуры.

Пример:

java
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.put("key1", 1);  // Потокобезопасно
map.put("key2", 2);  // Другой поток может выполнять эту операцию параллельно

Нюансы:

  • Гарантируется атомарность отдельных операций (put(), get()), но не составных (например, putIfAbsent() + get()).
  • В Java 8+ используется CAS (Compare-And-Swap) для минимизации блокировок.
  • Итераторы не бросают ConcurrentModificationException, но могут отражать лишь частично актуальное состояние.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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