RxJava中的多线程编程:调度器与订阅的深入解析
在实际项目中,我们通常会使用像Logback或Log4J 2这样的生产级日志系统。当遇到特殊的Observable时,我们可以声明式地选择用于发射值的调度器(Scheduler)。与CompletableFuture不同,RxJava很少独自做出线程相关的决策,而是选择安全的默认设置:使用客户端线程,不涉及多线程。
为了便于理解,我们使用一个简单的日志“库”,它会打印消息、当前线程以及程序启动以来的毫秒数:
void log(Object label) {
System.out.println(
System.currentTimeMillis() - start + "\t| " +
Thread.currentThread().getName() + "\t| " +
label);
}
什么是调度器(Scheduler)?
RxJava本身不引入并发,但为用户提供了处理线程的抽象。某些操作符在没有并发的情况下无法正常工作。调度器类(Scheduler)相对简单,其原理类似于 java.util.concurrent 中的 ScheduledExecutorService ,可执行任意代码块,可能在未来执行。为满足Rx契约,它提供了更细粒度的抽象。
调度器通常与 subscribeOn() 和 observeOn() 操作符一起使用,
RxJava调度器与多线程详解
超级会员免费看
订阅专栏 解锁全文
591

被折叠的 条评论
为什么被折叠?



