我正在使用带有驱逐策略集gugua的LoadingCache设置expireAfterWrite()。我还使用以下命令使访问条目无效:

v = cache.getIfPresent( k );
if( v != null ) {
  cache.invalidate( k );
}


有没有一种方法可以添加一个RemovalListener,使其仅在达到写入超时后自动退出条目时才被触发?从文档看来,每当删除条目时,都会调用RemovalListener。

最佳答案

是的,只要删除任何条目,就会调用RemovalListener,但是RemovalListener将收到一个RemovalNotification对象,其中包含原因,您可以使用该原因确定删除条目的方式。

CacheBuilder.newBuilder()
  .removalListener(new RemovalListener<Foo, Bar>() {
    public void onRemoval(RemovalNotification<Foo, Bar> notification) {
      if (notification.getCause() == RemovalCause.EXPIRED) {
        // we only care about these removals
      }
    }
  })
  .build();

关于java - RemovalListener仅适用于自动收回事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13318277/

10-10 17:32