首页 > 解决方案 > 在 Guava 缓存中,当创建 LoadingCache 而不提供它时,refreshAfterWrite 的默认值是什么

问题描述

在不提供 LoadingCache 的情况下创建时,refreshAfterWrite 的默认值是多少。

cache = CacheBuilder.newBuilder().build(new CacheLoader<Object, Object>() {
  @Override
  public Object load(Object o) throws Exception {
    return getObj(o);
  }

  @Override
  public ListenableFuture<Object> reload(Object o) throws Exception {
    final ListenableFutureTask<Object> task = ListenableFutureTask.create(() -> {
      return getObj(o);
    });
    executor.execute(task);
    return task;
  }
});

我在调试中看到 refreshAfterWrite 是-1,但这意味着什么?这意味着它永远不会重新加载?

标签: javaguava

解决方案


我可以从这个问题中读到:

据记载,如果未设置任何选项,则由 CacheBuilder 创建的缓存将永远不会进行任何类型的驱逐。这也适用于刷新,因为它是一种驱逐形式。


推荐阅读