Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Guava在插入和删除时调用了哪些方法_Java_Guava - Fatal编程技术网

Java Guava在插入和删除时调用了哪些方法

Java Guava在插入和删除时调用了哪些方法,java,guava,Java,Guava,我有自己的缓存,如下所示: LoadingCache<String, MT> g = (LoadingCache<String, MT>) CacheBuilder .newBuilder().maximumSize(5) .build(new CacheLoader<String, MT>() { @Override

我有自己的缓存,如下所示:

LoadingCache<String, MT> g = (LoadingCache<String, MT>) CacheBuilder
                .newBuilder().maximumSize(5)
                .build(new CacheLoader<String, MT>() {

                    @Override
                    public MT load(String arg0) throws Exception {
                        System.out.println("load for key " + arg0);
                        if (Singlten.getInstance().mts.containsKey(arg0)) {
                            return Singlten.getInstance().mts.get(arg0);
                        }
                        return null;
                    }

                });
LoadingCache g=(LoadingCache)CacheBuilder
.newBuilder().maximumSize(5)
.build(新的缓存加载程序(){
@凌驾
公共MT加载(字符串arg0)引发异常{
System.out.println(“键加载”+arg0);
if(Singlten.getInstance().mts.containsKey(arg0)){
返回Singlten.getInstance().mts.get(arg0);
}
返回null;
}
});
我想知道,在从缓存中插入和删除数据时,是否有可能(并得到guava的支持)调用这些函数

这就像我想在从cacche插入和删除时执行一些任务一样,有几种不同的选项,具体取决于您要完成的任务。你可能会更直接地问问题,而不是如何实现你所设想的解决方案,不管你试图解决的是什么潜在问题

也就是说,如果您想知道何时从缓存中手动添加或删除元素(例如,通过
.put()
.invalidate()
),请将缓存包装在调用这些方法时调用函数的实现中

如果您想知道何时自动添加元素(例如,通过对不存在的键调用
LoadingCache.get()
),请从调用时定义的
load()
方法中调用函数

如果您想知道何时从缓存中删除元素(通过逐出或手动删除),请将函数注册为


当然,您也可以在同一个缓存中组合这些策略(例如,使用
ForwardingCache
RemovalListener
)。

@SotiriosDelimanolis在这个问题上,我知道如何设置删除(删除)侦听器。但是当添加内容时,我找不到一个听众。@SotiriosDelimanolis你从这个问题中得到了什么?如何在添加内容时创建一个听众?我不明白它说的是没有用于缓存添加的侦听器。我想答案是,为使用
缓存添加一个包装,然后在那里添加add侦听器。@SotiriosDelimanolis我不知道如何添加这个包装。我做了一项工作,就是在创建一个方法时,该方法会做我希望侦听器做的事情,然后它会插入到缓存中,它正在工作,但这只是一项工作,直到有人在这里帮助我