如何在并行线程中执行observable

时间:2016-09-28 13:00:28

标签: java multithreading concurrency rx-java

我有Observable调用消息,其中包含几条消息。我想同时处理这些消息。我怎样才能使用rxJava?

消息。(并行执行可观察项目的代码).subscribe(msg-> process(msg))

(如果observable包含五个不同的消息,那么我需要在五个单独的线程中处理这五个消息)

2 个答案:

答案 0 :(得分:3)

如果您希望留在Observable世界,可以flatMap subscribeOn每个元素Observable.range(1, 10) .flatMap(v -> Observable.fromCallable(() -> compute(v)) .subscribeOn(Schedulers.computation) ) .subscribe(e -> { }, Throwable::printStackTrace); 和并行计算:

import React, { Component, PropTypes } from 'react'

export default class InputFoo extends Component {
  //export default React.createClass({

    submitHandler(evt){
    evt.preventDefault()
    const { inputFooAction } = this.props

    inputFooAction(evt.target[0].value);
  }
  //,

  render() {
    const { input } = this.props
    return (<div>
              <h1>Oh hey from inside the component {input}</h1>
              <form onSubmit={this.submitHandler}>
                <input type="text" id="theInput"/>
              </form>

             </div>)
  }
}// )

//block below is commented out for es5
InputFoo.propTypes = {
  inputFooAction: PropTypes.func,
  input: PropTypes.string 
}

答案 1 :(得分:0)

运行单线程&#34;观察&#34;您的消息,并将其包含的每条消息分发给提交给某种workers thread pool的新消息处理任务(例如简单Runnable)。

在这里您可以找到简单的操作方法:https://docs.oracle.com/javase/tutorial/essential/concurrency/executors.html