在下面的示例中(科特琳,但基本原理相同)
fun main(args: Array<String>) {
val executor = Schedulers.from(Executors.newCachedThreadPool())
Observable
.fromIterable(1 until 1000)
.observeOn(executor)
.map {
//1st block
Thread.sleep((Math.random() * 100).toLong())
Thread.currentThread().name + "-" + it
}
.map {
//2nd block
Thread.sleep((Math.random() * 100).toLong())
it + "-" + UUID.randomUUID()
}
.subscribe(
{
println(it)
},
{
it.printStackTrace()
},
{
executor.shutdown()
}
)
}
我注意到以下内容:-
我的问题是:-
基本上,由于Rx链要同步项目处理,因此看起来它正在使用同一线程来处理所有项目。如果您的应用程序依赖于Rx,则这种方法无法达到多线程的目的。据说Rx与底层并发实现无关。我有可能使用错误的方式吗?