Безопасны ли изменяемые поля в объекте POJO, если они хранятся в concurrentHashMap?

Безопасны ли изменяемые поля в объекте POJO, если они хранятся в concurrentHashMap?

Или мне нужно заблокировать поля с помощью блокировки или сделать их изменчивыми, чтобы гарантировать, что обновления видны всем потокам? Будет ли достаточно пометить поле как изменчивое, чтобы все потоки видели обновления?

1 ответ

Решение

безопасны ли изменяемые поля в объекте POJO, если они хранятся в concurrentHashMap?

Нет. Единственное, что ориентировано на многопотоковое исполнение, - это операции с самим хэш-картой.

Или мне нужно блокировать поля с помощью блокировки или сделать их изменчивыми, чтобы гарантировать, что обновления видны всем потокам?

Да, хотя этого не обязательно достаточно.

Будет ли достаточно пометить поле как изменчивое, чтобы все потоки видели обновления?

Это зависит от типов полей. Для ссылочных типов это также зависит от того, являются ли объекты изменчивыми.


Маленький совет:

Вы не можете иметь дело с безопасностью потоков с помощью простых стратегий, таких как создание всего изменчивого или синхронизированного. Вы действительно должны понимать технологию, а также понимать природу вашего приложения; то есть как будет происходить параллелизм / многопоточность и что должно быть поточно-ориентированным.

Другие вопросы по тегам