Многопоточность и параллелизм - как сделать хорошо разработанное приложение для отдыха, использующее одноэлементные компоненты? - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть @RestController("tables") со следующей зависимостью:

private Map<String, Table> tables;

Поле tables было объявлено в SpringConfig как singleton bean и содержит информацию обо всех таблицах.
Перед обновлением какой-либо таблицы необходимо проверить, существует ли она, и только в этом случае получить доступ к базе данных.
После создания необходимо добавить таблицу в таблицы и т. д.

Контроллер может выполнять CRUD операции с таблицами.

Как обеспечить правильную работу с совместным использованием ресурсов?
Как я знаю, я могу использовать ConcurrentHashMap вместо обычного HashMap.В этом случае он будет хорошо работать с добавлением и размещением, но когда потребуется обновить значение (его поля), у меня возникнут проблемы.

И если у меня в качестве зависимости будет, например, какая-нибудь private Table table -Синглтон бин, я должен использовать блок synchronized или что-то еще?

Если можете, приведите несколько примеров, чтобы понять, как это работает.
Основная идея - понять, как предотвратить появление недопустимых данных, когда разные потоки имеют доступ к одному и тому же ресурсу.

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