Синхронизированная карта:
Синхронизированная карта также не сильно отличается от Hashtable и обеспечивает аналогичную производительность в параллельных программах Java. Единственное различие между Hashtable и SynchronizedMap заключается в том, что SynchronizedMap не является устаревшим, и вы можете обернуть любую карту, чтобы создать ее синхронизированную версию, используя метод Collections.synchronizedMap ().
ConcurrentHashMap:
Класс ConcurrentHashMap предоставляет параллельную версию стандартного HashMap. Это улучшение функциональности synchronizedMap, предоставляемой в классе Collections.
В отличие от Hashtable и Synchronized Map, он никогда не блокирует всю карту, вместо этого он делит карту на сегменты, и для них выполняется блокировка. Будет лучше, если количество потоков чтения больше, чем количество потоков записи.
ConcurrentHashMap по умолчанию разделен на 16 регионов и применяются блокировки. Этот номер по умолчанию может быть установлен при инициализации экземпляра ConcurrentHashMap. При настройке данных в определенном сегменте получается блокировка для этого сегмента. Это означает, что два обновления могут по-прежнему безопасно выполняться одновременно, если они влияют на отдельные сегменты, что сводит к минимуму конфликт блокировок и, таким образом, увеличивает производительность.
ConcurrentHashMap не генерирует исключение ConcurrentModificationException
ConcurrentHashMap не генерирует исключение ConcurrentModificationException, если один поток пытается изменить его, в то время как другой перебирает его
Разница между synchornizedMap и ConcurrentHashMap
Collections.synchornizedMap (HashMap) вернет коллекцию, которая почти эквивалентна Hashtable, где каждая операция модификации на Map заблокирована на объекте Map, тогда как в случае ConcurrentHashMap безопасность потока достигается путем разделения всей карты на разные разделы на основе на уровне параллелизма и блокировки только определенной части вместо блокировки всей карты.
ConcurrentHashMap не допускает нулевые ключи или нулевые значения, в то время как синхронизированный HashMap допускает одно нулевые ключи.
Похожие ссылки
Link1
Link2
Сравнение производительности