Ответ
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);