[英]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();
将同步运行。
您可以使用subscribeOn
或observeOn
在其他线程上引入计算,但是请注意,某些Observable源和运算符的默认设置意味着它们将在发生预订的线程之外的另一线程上进行操作。 一个示例是Observable.interval(1, TimeUnit.SECONDS)
,它每秒发出一个递增的整数。 此Observable的默认调度程序是Schedulers.computation
。 发生订阅时,从与Schedulers.computation
关联的线程池中选择一个线程,并且发射发生在该线程上。 每个运算符的javadoc都会提到线程行为(可能就Scheduler
而言),因此请检查并不确定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.