Рассмотрим ниже карту
Map<String, Employee> m = new Hashtable<String, Employee>();
Несмотря на то, что карта синхронизирована и может быть доступна только одному потоку за раз, как насчет объекта, хранящегося как значение в карте? как только каждый поток получает объект-сотрудник, каждый поток может его обновить, и это обновление не является потокобезопасным.
1 ответ
Синхронизированные структуры данных не делают волшебным образом содержащиеся в них экземпляры потокобезопасными. Однако они могут помочь в безопасной публикации. Вам придется самостоятельно сделать Employee
потокобезопасным.
Также обратите внимание, что ConcurrentHashMap
не использует блокировку для всей карты, и во многих случаях к нему могут безопасно обращаться одновременно несколько потоков.
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].