【发布时间】:2014-11-30 10:39:56
【问题描述】:
我正在使用import com.google.common.cache.Cache
我是这样启动缓存的:
private Cache<String,String> mycache =CacheBuilder.newBuilder()
.concurrencyLevel(4).expireAfterAccess(30, TimeUnit.MINUTES).build();
在某些情况下,我愿意在等待过期之前手动删除条目。
我发现这样做的唯一方法是:
mycache.asMap().remove("somekey");
我在问这样做是否正确?我会有什么问题吗?
【问题讨论】:
-
如果地图是真实数据的副本(以保护它)或者地图是远程和/或分布式的,这不会删除密钥。因此,请使用 API 中的 invalidate 方法。
-
@tgkprog 不符合documentation。它只是列出了从地图创建的迭代器的风险。但事实上,没有理由不使用 API 方法。
-
如果您需要在迭代期间删除项目,请使用地图的删除方法。它必须重载才能让主缓存知道并且不会自行失败。
标签: java caching hashmap guava