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