小编Hac*_*und的帖子

LoadingCache expireAfterWrite 没有按预期工作

我有一个这样的加载缓存:

MyCacheLoader loader=new MyCacheLoader();
MyRemovalListener listener=new MyRemovalListener();
LoadingCache<String, String> myCache = CacheBuilder.newBuilder()
                .concurrencyLevel(10)
                .weakKeys()
                .maximumSize(2)
                .expireAfterWrite(120, TimeUnit.SECONDS)
                .removalListener(listener)
                .build(loader);
Run Code Online (Sandbox Code Playgroud)

但是当我做这样的事情来测试时:

System.out.println(myCache.get("100"));
System.out.println(myCache.get("103"));
System.out.println(myCache.get("110"));
System.out.println(myCache).get("111"));
Thread.sleep(230000);
System.out.println(myCache.size());
Run Code Online (Sandbox Code Playgroud)

我仍然得到 2 而不是零。为什么 ?超过 120 秒后,如果我没有错的话,我的大小应该为零吗?

我的缓存加载器

public class MyCacheLoader extends CacheLoader<String,String>     {
    @Override
    public String load(String key) throws Exception {
        return key;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的移除监听器

public class MyRemovalListener implements RemovalListener<String,String> {

    Logger logger = LoggerFactory.getLogger(MyRemovalListener.class);
    @Override
    public void onRemoval(RemovalNotification<String, String> removalNotification) {
        logger.info("Message with message Id ("+
                removalNotification.getKey()+ ") is removed.");
        System.out.println("Message with …
Run Code Online (Sandbox Code Playgroud)

java guava google-guava-cache

4
推荐指数
1
解决办法
3113
查看次数

标签 统计

google-guava-cache ×1

guava ×1

java ×1