У меня есть Карта, которая должна быть изменена несколькими потоками одновременно.
Кажется, что в Java API реализованы три разных синхронизированных реализации карты:
-
Hashtable -
Collections.synchronizedMap(Map) -
ConcurrentHashMap
Из того, что я понимаю, Hashtable является старой реализацией (расширяющей устаревший класс Dictionary), который был адаптирован позже, чтобы соответствовать интерфейсу Map. Хотя он синхронизирован, он, похоже, имеет серьезные проблемы с масштабированием и не рекомендуется для новых проектов.
А как насчет двух других? Каковы различия между картами, возвращаемыми Collections.synchronizedMap(Map) и ConcurrentHashMap s? Какой из них подходит для этой ситуации?