Javadoc说:
以线程安全映射的形式返回存储在此缓存中的条目的视图。对地图的修改直接影响缓存。
我缺少的是有关访问视图是否会影响接纳和驱逐政策的信息。根据这个旧的相关问题,它没有:
在 Guava 的 CacheBuilder 中,我们专门添加了 asMap() 视图以允许绕过缓存管理例程。cache.asMap().get(key) 是一个 peek 操作。
这肯定是有道理的。OTOH 视图提供了许多直接不可用的操作,用户可能会想使用它们,希望他们像直接操作一样更新访问统计信息。
例如,我发现自己使用cache.asMap().putIfAbsent
的是键的功能,所以替换它们是没有意义的。我希望它的工作方式cache.put
与条目不存在的情况完全相同。