Гуру Java,
В настоящее время у нас есть HashMap<String,SomeApplicationObject>
, который часто читается и иногда изменяется, и у нас возникают проблемы, связанные с тем, что во время модификации / перезагрузки операция чтения возвращает null
, что неприемлемо.
Чтобы исправить это, у меня есть следующие варианты:
А. Используйте ConcurrentHashMap.
Это похоже на первый вариант, но операция, о которой мы говорим, reload()
- означает clear()
, за которым следует replaceAll()
. Таким образом, если Map
читается после clear()
и до replaceAll()
, он возвращает null, что нежелательно. Даже если я synchronize
, это не решит проблему.
Б. Создайте другую реализацию на основе ReentrantReadWriteLock
Где бы я создал acqu Write Lock
перед reload()
операцией. Это кажется более подходящим, но я чувствую, что для этого должно быть что-то уже доступно, и мне не нужно изобретать велосипед.
Какой выход лучший?
ИЗМЕНИТЬ. Доступна ли уже какая-либо коллекция с такой функцией?
volatile
. - person Marko Topolnik   schedule 24.08.2012immutable
... Не могли бы вы дать несколько советов ??? - person Bharat Sinha   schedule 24.08.2012