Java 如何在并行线程中执行observable
我有一个可观察的消息,它包含几个消息。我想同时处理这些消息。我如何使用rxJava做到这一点 消息。(并行执行可观察项的代码)。订阅(msg->process(msg)) (如果observable包含五条不同的消息,那么我需要在五个单独的线程中处理这五条消息)运行“观察”消息的单个线程,并将它包含的每条消息分派给提交给某种类型的新消息处理任务(例如simpleJava 如何在并行线程中执行observable,java,multithreading,concurrency,rx-java,Java,Multithreading,Concurrency,Rx Java,我有一个可观察的消息,它包含几个消息。我想同时处理这些消息。我如何使用rxJava做到这一点 消息。(并行执行可观察项的代码)。订阅(msg->process(msg)) (如果observable包含五条不同的消息,那么我需要在五个单独的线程中处理这五条消息)运行“观察”消息的单个线程,并将它包含的每条消息分派给提交给某种类型的新消息处理任务(例如simpleRunnable) 在这里,您可以找到简单的操作方法:如果您想留在可观察的世界中,您可以flatMap使用subscribeOn和您想要
Runnable
)
在这里,您可以找到简单的操作方法:如果您想留在
可观察的世界中,您可以flatMap
使用subscribeOn
和您想要并行计算的每个元素:
Observable.range(1, 10)
.flatMap(v ->
Observable.fromCallable(() -> compute(v))
.subscribeOn(Schedulers.computation)
)
.subscribe(e -> { }, Throwable::printStackTrace);
这听起来像是多线程和NIO反应模型的糟糕组合。你确定这是件好事吗?订阅5个观察者到可观察对象?如果你想让结果保持给定的顺序,那么你可以使用concatmapanger
而不是flatMap
,并保持并发性。