【发布时间】:2012-05-04 04:45:54
【问题描述】:
在Guava库中,我很困惑为什么Cache.asMap()与Cache.size()不一致,除非调用Cache.cleanUp()。
Cache<Object, Object> cache = CacheBuilder.newBuilder()
.expireAfterWrite(1, TimeUnit.SECONDS)
.build();
cache.get(...);
...
//After some seconds, all entries are expired.
//cache.asMap() is EMPTY Map, but cache.size() != 0
所以我的问题是:Cache.asMap() 与Cache.size() 不一致是错误吗?
虽然我注意到Cache.size() 的javadoc 是:
/**
* Returns the **approximate** number of entries in this cache.
*/
我只能猜测它与并发环境有关。
Cache.cleanUp() 究竟做了什么?
【问题讨论】:
标签: java caching concurrency guava