我有自己的缓存:
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;
}
});
我想知道是否可以(并且由番石榴支持)具有在从缓存中插入和删除数据时调用的函数?
就像我想在cacche
中插入和删除时做一些任务答案 0 :(得分:0)
有几种不同的选择,具体取决于您要完成的工作。你可能会更好地直接询问what you're trying to accomplish,而不是如何实现你想要解决的任何潜在问题的解决方案。
也就是说,如果您想知道何时从缓存中手动添加或删除元素(例如,通过.put()
或.invalidate()
),请将缓存包装在调用您的ForwardingCache
实现中调用这些方法时的函数。
如果您想知道何时自动添加元素(例如,通过在不存在的键上调用LoadingCache.get()
),请在调用{{3}时定义的load()
方法中调用您的函数}}
如果您想知道从缓存中删除元素的时间(通过逐出或手动删除),请将您的功能注册为CacheBuilder.build()
。
您当然也可以将这些策略(例如,使用ForwardingCache
和RemovalListener
)合并到同一个缓存中。