我在项目中使用LoadingCache。我为缓存配置了RemovalListener和CahceLoader。
LoadingCache<Key, value> cache = cache = (LoadingCache<Key, value>) CacheBuilder
.newBuilder().initialCapacity(50).maximumSize(500).expireAfterAccess(4, HOURS)
.removalListener(new RemovalHander())
.build(new CacheLoader<Key, value>() {
@Override
public Value load(Key request) {
return loadCache(request);
}
});
在以下情况下,我遇到了与此缓存并发的问题:
因此,简而言之,RemovalHander与CacheLoader争用Key1。
我想避免上述情况,并考虑调用cleanup()
的{{1}}方法。
请您提出以下几点建议: