我是RxJava的新手,我想弄清楚是否有一个等同于在不同线程上并行运行多个异步任务的方法。
我理解RxJava等价的
AsyncTask asyncTask = new AsyncTask<String, Void, ObjectType>(){
@Override
protected ObjectType doInBackground(String... params) {
return someMethod(params[0]);
}
@Override
protected void onPostExecute(ObjectType objectType) {}
}
aynctask.execute();
Observable.just(string)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.map(this::someMethod)
.subscribe(new Observer<ObjectType>() {
@Override
public void onCompleted() {}
@Override
public void onError(Throwable e) {}
@Override
public void onNext(ObjectType objectType) {}
});
但是我如何在RxJava中实现等价的
呢?asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
Rx Java文档中的"Scheduler"一节很好地回答了这个问题。我不会试图在这里总结这些丰富的信息,我只想说,asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
的等效物是让你的Observable操作符级联中的操作符对特定的调度程序进行操作。
特别是,您可以使用Schedulers.from(AsyncTask.THREAD_POOL_EXECUTOR)方法在特定的java.util.concurrent.Executor
上执行操作符。