gpt4 book ai didi

rx-java - Rx 中设置调度程序的顺序

转载 作者:行者123 更新时间:2023-12-02 13:09:32 29 4
gpt4 key购买 nike

我对 Rx 真的很陌生,只是想知道 subscribeOn 的顺序如何影响 Observable

//This will not print anything
Observable.just("whatever")
.flatMap { s -> Observable.just(s.length) }
.subscribeOn(Schedulers.newThread())
.subscribe(::println)

//This prints the length
Observable.just("whatever")
.subscribeOn(Schedulers.newThread())
.flatMap { s -> Observable.just(s.length) }
.subscribe(::println)

幕后发生了什么,为什么?

最佳答案

RxJava 调度程序使用守护线程,如果 Java 的“主”线程退出,这些线程可能会停止或根本不运行。当我运行这两种设置时,有时第二个也不打印任何东西,有时它会打印;您是否看到某些东西是概率性的。

这真的取决于 newThread 的速度有多快 react 并在上游执行代码。对于第二种情况,由于它在主线程上发生了更长的订阅集,因此执行返回的时间在 subscribe 之后。 , newThread可能有足够的时间来触发打印。

如果你把 Thread.sleep(1000)您会看到两者都打印值。

关于rx-java - Rx 中设置调度程序的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42158279/

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