个人觉得,RxJava源于异步编程,而异步编程的本质是以线程为载体,实现任务串行,并行或聚合等操作。所以RxJava就是对java线程操作的封装,让用户只关心业务逻辑即可。 至于观察者模式,以及背压等都是它的实现手段而已。 对于初学者来说,不认清楚这点,即便看完各个大牛的文章,仍然晕头转向。
下面用王宝令老师的《java并发变成实战》里面的例子作说明。以烧水,煮茶为例,任务之间的关系如下:
串行
并行
聚合
仔细想想,RXJAVA 的所有操作是否都是围绕 任务的处理 展开。
RxJava 来源于异步编程, 是异步编程的Java实现版本。而异步编程处理的核心问题就是任务串行,并行和聚合操作。
所以,当我们从任务的角度去学习RxJava, 你就会豁然开朗。RxJava可以类比java中的CompletableFuture类来理解。
如果大牛们一开始用java的线程和并发类等知识,来解释RxJava, 而不是上来就整一个水管模型,讲讲观察者模式,我想大家也许会更快速地理解和掌握。