gpt4 book ai didi

java - RxJava是多线程的吗?

转载 作者:行者123 更新时间:2023-11-30 02:47:00 26 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

举个例子

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

将同步运行。

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

关于java - RxJava是多线程的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39925869/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com