У меня есть @RestController("tables")
со следующей зависимостью:
private Map<String, Table> tables;
Поле tables
было объявлено в SpringConfig как singleton bean и содержит информацию обо всех таблицах.
Перед обновлением какой-либо таблицы необходимо проверить, существует ли она, и только в этом случае получить доступ к базе данных.
После создания необходимо добавить таблицу в таблицы и т. д.
Контроллер может выполнять CRUD операции с таблицами.
Как обеспечить правильную работу с совместным использованием ресурсов?
Как я знаю, я могу использовать ConcurrentHashMap вместо обычного HashMap.В этом случае он будет хорошо работать с добавлением и размещением, но когда потребуется обновить значение (его поля), у меня возникнут проблемы.
И если у меня в качестве зависимости будет, например, какая-нибудь private
Table table
-Синглтон бин, я должен использовать блок synchronized
или что-то еще?
Если можете, приведите несколько примеров, чтобы понять, как это работает.
Основная идея - понять, как предотвратить появление недопустимых данных, когда разные потоки имеют доступ к одному и тому же ресурсу.