[英]Why is my RxJava observable not firing off subscribers?
我正在搞亂RxJava,我想要傳輸一千個連續的整數。 然后我想異步將它們分成奇數和偶數流,然后異步打印它們。
但是,我沒有打印出任何內容或至少非常部分的輸出。 我錯過了什么? 我的安排不正確嗎? 或者控制台是否在Eclipse中存在多線程問題?
public static void main(String[] args) {
List<Integer> values = IntStream.range(0,1000).mapToObj(i -> Integer.valueOf(i)).collect(Collectors.toList());
Observable<Integer> ints = Observable.from(values).subscribeOn(Schedulers.computation());
Observable<Integer> evens = ints.filter(i -> Math.abs(i) % 2 == 0);
Observable<Integer> odds = ints.filter(i -> Math.abs(i) % 2 != 0);
evens.subscribe(i -> System.out.println(i + " IS EVEN " + Thread.currentThread().getName()));
odds.subscribe(i -> System.out.println(i + " IS ODD " + Thread.currentThread().getName()));
}
您正在使用運行守護程序線程的Schedules.computation
啟動處理管道。 因此,當main
線程完成時,這些線程在處理observable之前終止。
因此,如果您希望看到打印結果,您可以讓主線程等待結果(例如通過Thread.sleep
)或通過刪除subscribeOn
調用線程。 還有一個選項可以創建自己的調度程序,它將運行非守護程序線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.