运行结果如下:

说明:
guava中使用缓存需要先声明一个CacheBuilder对象,并设置缓存的相关参数,然后调用其build方法获得一个Cache接口的实例。
13.2 Callable方式
方法原型如下:get(K, Callable<V>)
这个方法返回缓存中相应的值,如果未获取到缓存值则调用Callable方法。这个方法简便地实现了模式"如果有缓存则返回;否则运算、缓存、然后返回"。
看示例代码如下:
Cache<String, String> cache = CacheBuilder.newBuilder().maximumSize(1000).build();
String resultVal = cache.get("test", new Callable<String>() {
public String call() {
//未根据key查到对应缓存,设置缓存
String strProValue="test-value"
return strProValue;
}
});
System.out.println("return value : " + resultVal);
}
13.3 缓存过期删除
guava的cache数据过期删除的方式有二种,分别是主动删除和被动删除二种。
被动删除三种方式
基于条数限制的删除
使用CacheBuilder.maximumSize(long)方法进行设置。
注意点:
1、这个size不是容量大小,而是记录条数。
2、使用CacheLoader方式加载缓存的时候,在并况下如果一个key过期删除,正好同时有一个请求获取缓存,有可能会报错。
基于过期时间删除
在Guava Cache中提供了二个方法可以基于过期时间删除
1、expireAfterAccess(long, TimeUnit):某个key最后一次访问后,再隔多长时间后删除。
2、expireAfterWrite(long, TimeUnit):某个key被创建后,再隔多长时间后删除。
基于引用的删除
通过使用弱引用的键、或弱引用的值、或软引用的值,Guava Cache可以把缓存设置为允许垃圾回收。
主动删除三种方式
个别清除:Cache.invalidate(key)
批量清除:Cache.invalidateAll(keys)
清除所有缓存项:Cache.invalidateAll()
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-25691-15.html
春雨梦归
详见我昨天文章
所以一线人员有权直接开火
随着排水量达12000吨的055型驱逐舰的建造服役
把自己的家慢慢败掉