Встречается на 2% собеседований по Java
Какие механизмы синхронизации используются в ConcurrentHashMap
ConcurrentHashMap использует несколько механизмов для обеспечения потокобезопасности:
- Сегментирование (bucket-level locking) - карта делится на сегменты (16 по умолчанию), блокировка применяется только к конкретному сегменту при изменении. Это позволяет нескольким потокам работать с разными сегментами одновременно.
-
CAS (Compare-And-Swap) операции - для атомарных операций в Java 8+ используются оптимистичные блокировки через Unsafe.compareAndSwap.
-
Synchronized блоки - для модификации конкретных бакетов используются тонкие блокировки.
Пример изменения в Java 8:
java
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.compute("key", (k, v) -> v == null ? 1 : v + 1); // атомарное обновление-
Неблокирующие операции - методы типа get() вообще не используют блокировки, что обеспечивает высокую производительность при чтении.
-
Копирование при изменении - при ресайзинге создаются новые узлы вместо модификации старых.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы