我正在学习调度程序是如何工作的。所以我尝试将数字设置为 100。使用 publishOn 它可以工作(它将数字设置为 100),但是使用 subscribeOn 它没有将数字设置为 100。我不明白为什么?
@Test
fun reactor01_LearnSchedulers(){
var number = 0
Mono.just(100)
.doOnNext { numb -> number = numb }
// .subscribeOn(Schedulers.boundedElastic()) this gives result: 0
.publishOn(Schedulers.boundedElastic()) // this gives result: 100
.subscribe()
println("Result : $number")
}
更新:添加一些代码后,我发现结果不一致。
fun reactor01_LearnSchedulers(){
var number = 0
Mono.just(100)
.doOnNext { numb -> number = numb }
.doOnNext { println("Result from inside: $number") }
.publishOn(Schedulers.boundedElastic())
.subscribe()
println("Result from outside: $number")
// with publishOn Result from inside: 100, Result from outside: 100
// with subscribeOn Result from outside: 0, Result from inside: 100
}