爪哇大师,
目前我们有一个经常HashMap<String,SomeApplicationObject>
被读取和偶尔修改的文件,我们遇到了在修改/重新加载期间,读取操作返回的问题,null
这是不可接受的。
为了解决这个问题,我有以下选项:
A. 使用ConcurrentHashMap
这看起来像是第一个选择,但我们正在谈论的操作是reload()
- 意味着clear()
后跟replaceAll()
。因此,如果Map
阅读 postclear()
和 prereplaceAll()
它返回 null 这是不可取的。即使我synchronize
这并不能解决问题。
B. 基于 ReentrantReadWriteLock创建另一个实现
我将在操作Write Lock
前创建获取reload()
。这似乎更合适,但我觉得必须有一些可用的东西,我不需要重新发明轮子。
最好的出路是什么?
编辑是否已经有任何具有此类功能的收藏?