繁体   English   中英

RxJava是多线程的吗?

[英]Is RxJava multi-threaded?

假设我分拆了几个事件订阅,如下所示:

event.subscribe((eventObj) -> {
            // do stuff
        });

event2.subscribe((eventObj) -> {
            // do more stuff
        });

这是隐式创建两个线程吗?

默认情况下,RX Java不会为订阅创建新线程,请查看Scheduler文档以了解多线程行为。

订阅操作本身不会在另一个线程上开始计算,而是Observable本身的定义决定了线程的行为。

举个例子

Observable
  .just(1, 2, 4)
  .doOnNext(System.out::println)
  .subscribe();

将同步运行。

您可以使用subscribeOnobserveOn在其他线程上引入计算,但是请注意,某些Observable源和运算符的默认设置意味着它们将在发生预订的线程之外的另一线程上进行操作。 一个示例是Observable.interval(1, TimeUnit.SECONDS) ,它每秒发出一个递增的整数。 此Observable的默认调度程序是Schedulers.computation 发生订阅时,从与Schedulers.computation关联的线程池中选择一个线程,并且发射发生在该线程上。 每个运算符的javadoc都会提到线程行为(可能就Scheduler而言),因此请检查并不确定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM