Встречается на 2% собеседований по Java
В чем разница между СoncurrentHashMap и Hashtable
ConcurrentHashMap и Hashtable оба потокобезопасны, но есть ключевые различия:
-
Блокировки
Hashtableблокирует всю таблицу на время операций (высокая конкуренция).ConcurrentHashMapиспользует сегментированные блокировки (блокируется только сегмент), что повышает производительность.
-
Null-значения
Hashtableзапрещаетnullкак ключи и значения.ConcurrentHashMapтакже запрещаетnull(чтобы избежать неоднозначности в многопоточной среде).
- Итераторы
HashtableвыброситConcurrentModificationExceptionпри изменении во время итерации.ConcurrentHashMapпредоставляет слабо согласованные итераторы (не гарантируют актуальность данных, но не падают).
Пример:
java
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.put("key", 1); // Потокобезопасно, блокируется только сегмент
Hashtable<String, Integer> table = new Hashtable<>();
table.put("key", 1); // Потокобезопасно, но блокируется вся таблицаКогда использовать:
ConcurrentHashMap— для высоконагруженных многопоточных сценариев.Hashtable— устаревший, лучше использоватьConcurrentHashMapилиCollections.synchronizedMap().

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