guava深入理解(6)-eventbus,Caches

Eventbus

学过as3或者js事件流的应该对这个很熟悉了(抽象的addEventlistenter),guava的eventbus基本上可以看成是前者的弱化版。
在gui或者异步编程中,回调模式非常常见,而eventbus就是将这种监听-回调的模式抽象出来。基本上来说,就是一个事件发布者,持有一个eventbus组件,他用这个eventbus来发布事件,然后监听者,则将自己注册到eventbus组件里,两者就靠一个eventbus来进行交流。
一般来说,我们都是传入一个匿名内部类,或者lambda(java8),来作为一个监听器,但是guava的eventbus选择了注解加反射回调的方式,虽然官方说这样用起来更加清晰,但我感觉还是lamda更方便一些。


class EventBusChangeRecorder {
//回调方法 注意这个注解
@Subscribe public void recordCustomerChange(ChangeEvent e) {
    recordChange(e.getChange());
  }
}
//注册回调方法
eventBus.register(new EventBusChangeRecorder());
//创建并发布事件
ChangeEvent event = getChangeEvent();
eventBus.post(event);

Caches

实现缓存也是编程中相当常见的一类任务,特别是在网络应用中。例如缓存图片,缓存某些复杂算法的结果…

//缓存
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
        //最大内存占用,超过后缓存中的部分数据会被回收
       .maximumSize(1000)
       //写后十分钟回收缓存
       .expireAfterWrite(10, TimeUnit.MINUTES)
       //移除缓存的监听器
       .removalListener(MY_LISTENER)
       .build(
           new CacheLoader<Key, Graph>() {
           //加载数据的方法
             public Graph load(Key key) throws AnyException {
               return createExpensiveGraph(key);
             }
           });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值