Встречается на 2% собеседований по Java
Как работает HashMap с многопоточным программированием
HashMap не является потокобезопасной структурой. При одновременной модификации из нескольких потоков возможны race conditions, приводящие к потере данных или повреждению внутренней структуры (например, бесконечным циклам при рехешировании).
Проблемные сценарии:
- Два потока добавляют элементы - один может перезаписать другой
- Поток читает, а другой изменяет - может получить неконсистентные данные
java
// Небезопасно в многопоточной среде!
Map<String, Integer> unsafeMap = new HashMap<>();Альтернативы:
Collections.synchronizedMap()- обертка с synchronizedConcurrentHashMap- оптимальный вариант, использует сегментированные блокировкиHashtable- устаревший synchronized-аналог
Пример с ConcurrentHashMap:
java
ConcurrentHashMap<String, Integer> safeMap = new ConcurrentHashMap<>();
safeMap.put("key", 1); // ПотокобезопасноДля read-heavy workload можно также рассмотреть ConcurrentSkipListMap.

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