事件合并相关的应用
1、CountDownLatch
countDownLatch是一个计数器,线程完成一个记录一个,计数器递减,只能只用一次
2、CyclicBarrier
CyclicBarrier的计数器更像一个阀门,需要所有线程都到达,然后继续执行,计数器递增,提供reset功能,可以多次使用
RxJava 中的合并操作符
Observable.just(1,2,3,4,5),Observable.just(“A”,“B”,“C”,“D”)
3、concat(按顺序不会交叉)
concat:组合多个被观察者一起发送数据,合并后按顺序串行执行,即会先发送完第一个数据源的所有数据,再发送第二个数据源的所有数据…以此类推
结果 1,2,3,4,5 “A”,“B”,“C”,“D”
4、merge (按时间会交叉)
merge:组合多个被观察者一起发送数据,合并后按时间线并行执行
结果 1,“A”,2,“B”,3, “C”,4, “D”,5
5、zip(交叉后合并数据,按之中的最少的数据发送)
zip会将多个被观察者合并,根据各个被观察者发送事件的顺序一个个结合起来,最终发送的事件数量会与源 Observable 中最少事件的数量一样。
结果 “1A”,“2B”,“3C”,“4D” (只有4个数据)