我使用RxJava 2创建了一个非常简单的例子(我开发的所有内容都使用了RxJava 1),我发现了下一个我根本不了解的行为。我有下一个带有zip操作的Observable:
Observable.zip(getGame(gameId), getDetail(gameId), getReviews(gameId),
(game, detail, reviews) -> new GameInfo(game, detail, reviews))
.subscribeOn(Schedulers.newThread())
.subscribe(sendGameInfo(asyncResponse));
每个方法都返回一个Observable实例。理论上,我希望每个方法(getGame,getDetail,...)都可以在一个新的Thread中并行执行,但是做一个sysout我注意到所有的时间都是相同的Thread所以它们不是在执行平行。我想这是预期的行为,但是如果我想并行制作有一种方法可以做到这一点,而不必在每个observable中定义一个runnable?
非常感谢。
答案 0 :(得分:0)
好的,你需要订阅每个Observable
Observable.zip(getGame(gameId)
.subscribeOn(Schedulers.from(executor)),
getDetail(gameId)
.subscribeOn(Schedulers.from(executor)),
getReviews(gameId)
.subscribeOn(Schedulers.from(executor)),
(game, detail, reviews) -> new GameInfo(game, detail, reviews))
.subscribeOn(Schedulers.from(executor))
.subscribe(sendGameInfo(asyncResponse));