两张地图是否有效完全取决于getFromDatabase()的价格以及对象的大小。这样做似乎并非超出所有合理范围。
至于实现,看起来您可能可以以稍微不同的方式对地图进行分层以获得所需的行为,并且仍然具有良好的并发属性。
- 创建具有弱值的第一个地图,然后将计算函数getFromDatabase()放在此地图上。
- 第二个地图是即将到期的地图,也正在计算,但是此功能仅从第一个地图获得。
通过第二张地图进行所有访问。
换句话说,到期映射的作用是将对象中最近使用的子集固定在内存中,而弱引用映射是真正的缓存。
-dg



