Рассмотрим ниже карту

Map<String, Employee> m = new Hashtable<String, Employee>();

Несмотря на то, что карта синхронизирована и может быть доступна только одному потоку за раз, как насчет объекта, хранящегося как значение в карте? как только каждый поток получает объект-сотрудник, каждый поток может его обновить, и это обновление не является потокобезопасным.

0
noble 20 Июн 2017 в 19:43

1 ответ

Лучший ответ

Синхронизированные структуры данных не делают волшебным образом содержащиеся в них экземпляры потокобезопасными. Однако они могут помочь в безопасной публикации. Вам придется самостоятельно сделать Employee потокобезопасным.

Также обратите внимание, что ConcurrentHashMap не использует блокировку для всей карты, и во многих случаях к нему могут безопасно обращаться одновременно несколько потоков.

0
bowmore 20 Июн 2017 в 19:48