Guava学习笔记--02. EventBus使用

付威     2020-02-06   1474   4min  

Guava EventBus

EventBus 是Guava的一个发布订阅的模型,先看一个简单的实现:

  1. 定义一个Event的消息传递对象

    
     public class TestEvent1 {
         private final int message;
    
         /**
         * 构造方法
         * @param message
         */
         public TestEvent1(int message) {
             this.message = message;
            // System.out.println("TestEvent1 事件message:"+message);
         }
    
         public int getMessage() {
             return message;
         }
     }
     
    
  2. 定义一个Listener

     public class EventListener {
         public int lastMessage = 0;
    
         @Subscribe       
         public void listen(TestEvent1 event) {
             lastMessage = event.getMessage();
             System.out.println("Message:"+lastMessage);
         }
    
         public int getLastMessage() {
             return lastMessage;
         }
     }
    
    
  3. 定义一个使用

    
      public static void main(String[] args) {
         // 1.构造一个事件总线
         EventBus eventBus = new EventBus("test");
    
         // 2.构造一个事件监听器
         EventListener listener = new EventListener();
    
         // 3.把事件监听器注册到事件总线上
         eventBus.register(listener);
    
         // 4.事件总线发布事件,触发监听器方法
         eventBus.post(new TestEvent1(1));
    
     }   
    
    
    

运行结果是:

    Message:1

如果是多个方法需要调用,只需要在新方法上面加上@Subscribe注解。

    @Subscribe         
    public void listen2(TestEvent1 event) {
        lastMessage = event.getMessage();
        System.out.println("Message2:"+lastMessage);
    } 

如果想使用异步的方法处理,可以使用AsyncEventBus ,具体代码:


AsyncEventBus eventBus = new AsyncEventBus (Executors.newFixedThreadPool(3));

当然也可以注册多个EventListener。

  eventBus.register(new EventListener());
  eventBus.register(new EventListener2());
(本文完)

作者:付威

博客地址:http://blog.laofu.online

如果觉得对您有帮助,可以下方的RSS订阅,谢谢合作

如有任何知识产权、版权问题或理论错误,还请指正。

本文是付威的网络博客原创,自由转载-非商用-非衍生-保持署名,请遵循:创意共享3.0许可证

交流请加群113249828: 点击加群   或发我邮件 laofu_online@163.com

付威

获得最新的博主文章,请关注上方公众号