它将每根水管发出的事件保存起来, 等两个水缸都有事件了之后就分别从水缸中取出一个事件来组合, 当其中一个水缸是空的时候就处于等待的状态.
题外话: 大家来分析一下这个水缸有什么特点呢?...这个时候上游每次调用emitter.onNext(i)其实就相当于直接调用了Consumer中的:
?
所以这个时候其实就是上游每延时2秒发送一次. 最终的结果也说明了这一切....当上下游工作在同一个线程中时, 这时候是一个同步的订阅关系, 也就是说上游每发送一个事件必须等到下游接收处理完了以后才能接着发送下一个事件....上游把事件发送到水缸里去, 下游从水缸里取出事件来处理, 因此, 当上游发事件的速度太快, 下游取事件的速度太慢, 水缸就会迅速装满, 然后溢出来, 最后就OOM了....既然源头找到了, 那么下一节我们就要来学习如何去解决了. 下节见.