Google Guava EventBus简化生产/消费者模式使用
在Google Guava 10版本引入了EventBus, 它主要用来简化我们处理生产/消费者编程模型.
基本用法
使用Guava之后, 如果要订阅消息, 就不用再继承指定的接口, 只需要在指定的方法上加上@Subscribe注解即可:
@Testpublic void shouldGetEventsFromSubclass() throws Exception { // given EventBus eventBus = new EventBus("test"); IntegerListener integerListener = new IntegerListener(); NumberListener numberListener = new NumberListener(); eventBus.register(integerListener); eventBus.register(numberListener); // when eventBus.post(new Integer(100)); // then assertThat(integerListener.getLastMessage()).isEqualTo(100); assertThat(numberListener.getLastMessage()).isEqualTo(100); //when eventBus.post(new Long(200L)); // then // this one should has the old value as it listens only for Integers assertThat(integerListener.getLastMessage()).isEqualTo(100); assertThat(numberListener.getLastMessage()).isEqualTo(200L);}