1
我正在學習RxJava異步訂閱是如何工作的。但有些問題讓我困惑。RxJava異步訂閱將丟失消息
@Test public void testCreateAsync() throws InterruptedException {
Observable<String> observable = Observable.create(emitter -> {
for (int i = 0; i < 10; i++) {
if (!emitter.isDisposed()) {
int finalI = i;
new Thread(() -> emitter.onNext("value_" + finalI)).start();
}
}
if (!emitter.isDisposed()) {
emitter.onComplete();
}
});
observable.subscribe(System.out::println);
}
上面的代碼工作正常,並打印value_1
到value_9
。但是,當我前面加上睡眠認購,最後的消息value_9
將不被打印出來,像這樣:
@Test public void testCreateAsync() throws InterruptedException {
...
Thread.sleep(3000);
observable.subscribe(System.out::println);
}
任何討論這個問題是升值。
ps:java版本是1.8
,而RxJava版本是2.1.1
。
這實際上沒有意義,只是一個演示。感謝您的回答。我忽略了併發問題。 – lovexiaov