Проверяет знание истории API коллекций и особенностей синхронизации.
Hashtable — старый класс из Java 1.0, синхронизирует все методы на уровне объекта, что приводит к сильным блокировкам и снижению производительности при конкуррентном доступе. Современные альтернативы (ConcurrentHashMap, Collections.synchronizedMap) более гибкие и эффективные.
Особенности Hashtable:
Методы get, put, remove помечены synchronized, блокируют всю таблицу.
Не поддерживает null в качестве ключа или значения.
Недостатки:
Грубая блокировка: только один поток может читать или писать одновременно.
Устаревший дизайн: отсутствуют возможности сегментирования или локальной синхронизации.
Современные альтернативы:
ConcurrentHashMap:
Разбиение на сегменты (Java 8 — внутренняя оптимизация через CAS и корзины).
Высокая пропускная способность при многопоточном доступе.
Collections.synchronizedMap(Map):
Обёртка над любой Map с синхронизацией, но всё ещё одна точка блокировки.
Вывод:
Для новых проектов применять ConcurrentHashMap или другие коллекции из java.util.concurrent.