2016-05-25 35 views
0
public static void main(String[] args) { 
    List<Integer> list = Arrays.asList(1,2,3,4,5,6,7); 
    Observable.from(list) 
      .map(new Func1<Integer, String>() { 
       @Override 
       public String call(Integer integer) { 
        return String.format("%d ",integer); 
       } 
      }).subscribeOn(Schedulers.newThread()) 
      .observeOn(Schedulers.newThread()) 
      .subscribe(new Action1<String>() { 
       @Override 
       public void call(String s) { 
        System.out.print(s); 
       } 
      }); 
} 

這裏是一個測試,當我使用rxjava。它不打印任何東西。我不知道爲什麼。任何人都可以給我一個幫助?謝謝。約Schedulers.newThread()

+1

您的主要方法在觀察者代碼執行之前返回。爲了解決這個問題,你可以在.subscribe(Action1) –

+0

之前添加.toBlocking(),因爲我得到了我的問題(主要方法已經完成) – duwei

回答

3

RxJava標準調度程序是守護程序線程。當你的main()方法退出時,JVM退出,這些守護進程線程停止。

main()方法的末尾放置一個Thread.sleep(5000),您將看到打印輸出。或者,在撥打.subscribe()之前應用.toBlocking()