Мне было интересно, нужна ли синхронизация или использование параллельного класса, или, наоборот, является ли потокобезопасным использование не параллельного класса и не выполняется синхронизация на карте в многопоточной среде, если меняется только модификация картызначения карты.
Причина, по которой я спрашиваю это, заключается в том, что HashMap (и другая документация по непараллельным картам) имеют этот комментарий:
Обратите внимание, что эта реализация не синхронизирована.Если несколько потоков обращаются к хэш-карте одновременно, и хотя бы один из потоков структурно изменяет карту, она должна быть синхронизирована извне.(Структурная модификация - это любая операция, которая добавляет или удаляет одно или несколько сопоставлений; простое изменение значения, связанного с ключом, который уже содержится в экземпляре, не является структурной модификацией.) Обычно это выполняется путем синхронизации с некоторым объектом, который естественным образом инкапсулирует карту.
Что заставляет меня поверить, если модификация не является структурной (т. Е. Нет добавленных или удаленных), я смогу обновить (не одновременную) карту без синхронизации.
Я читаю это правильно?Т.е. является ли обновление значения в карте атомарным процессом?