簡體   English   中英

為什么我的RxJava可觀察不會觸發訂閱者?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM