Guava库学习:学习Guava Cache(二)Guava caches(2)

    链接地址:http://www.xx566.com/detail/168.html

    上一篇,Guava库学习:学习Guava Cache(二)Guava caches(1)_Cache中我们简单的介绍了Guava Cache中一个最基本的接口:Cache,我们简单的了解了其中的一些方法,本篇我们继续学习Guava Cache中另外一个基本的接口:LoadingCache。接下来,我们开始,Guava库学习:学习Guava Cache(二)Guava caches(2)_LoadingCache。

    

    LoadingCache接口扩展了Cache接口的自动装载的功能,考虑下面的代码实例:

Book book = loadingCache.get(id);

    在上面的代码中, 如果book对象在get方法调用执行的时候不可用,LoadingCache知道怎样返回对象,保存在缓存中,然后返回value值。

 

    Loading values

    由于LoadingCache的实现是线程安全的,通过同样的key值调用get方法,当缓存还在装载的时候就会阻塞线程。一旦value值被加载,该调 用将返回最原始的调用get方法返回的value值,然而,多个通过不同key值的调用则会并发的加载,如果我们拥有一个键值的集合,并且想要去检索每个 键对应的value值,我们需要像下面这样调用:

ImmutableMap<key,value> map = cache.getAll(Iterable<? Extends  key>);

    如上所示,getAll方法返回了一个不可变的Map集合,通过指定键值以及与键值关联的缓存中的value值,getAll返回的map可能是所有缓存的value值,也可能是新检索到的value值,或者是已有缓存和新检索到的value值的混合。

 

    Refreshing values in the cache

    LoadingCache 同样提供了一种缓存中更新value值的机制:

refresh(key);

    通过调用refresh方法,LoadingCache会检索到对应key新的value值,当前的value值在新的value值返回前不会被从缓存出 废弃,这意味着如果在加载的过程中调用get方法,则会返回缓存中当前的value值。如果在refresh方法调用中出现异常,原始的value值会依 然在缓存中保存。需要记住的是:如果value值被异步的检索,在value值被真正的更新前,方法都将会返回原始的value值。

转载于:https://my.oschina.net/realfighter/blog/350033

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值