Что такое ConcurrentHashMap

«Что такое ConcurrentHashMap» — вопрос из категории Многопоточность, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

ConcurrentHashMap — это потокобезопасная реализация Map в Java, оптимизированная для многопоточных сценариев. В отличие от Hashtable или Collections.synchronizedMap(), она использует сегментирование (buckets) для уменьшения блокировок, позволяя нескольким потокам читать и даже модифицировать данные параллельно (если изменения происходят в разных сегментах).

Особенности:

  • Не блокирует всю таблицу при операциях.
  • Поддерживает null в значениях, но не в ключах.
  • Итераторы weakly consistent (могут отражать не все изменения).

Пример:

ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.put("key1", 1);

// Потокобезопасное обновление
map.compute("key1", (k, v) -> v + 1);