我正在使用带有驱逐策略集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/