2017-06-20 47 views
1

觀察如果我寫了這樣的事情,然後操作和通知將在當前線程...RxJava計劃對主線程

Observable.fromCallable(() -> "Do Something") 
    .subscribe(System.out::println); 

如果我做一個操作像這樣的後臺線程,然後操作和通知將在背景線程...

Observable.fromCallable(() -> "Do Something") 
    .subscribeOn(Schedulers.io()) 
    .subscribe(System.out::println); 

如果我想觀察在主線程和做後臺的Android我會做...

Observable.fromCallable(() -> "Do Something") 
    .subscribeOn(Schedulers.io()) 
    .observeOn(AndroidSchedulers.mainThread()) 
    .subscribe(System.out::println); 

但如果我寫一個標準的Java程序,什麼是聲明,相當於你想要觀察主線程?

+2

你需要一個阻塞調度此作爲Java的主線程是不是一個游泳池/尺蠖。這僅適用於擴展項目中的RxJava 2.x:https://github.com/akarnokd/RxJava2Extensions#blockingscheduler – akarnokd

回答

1

通過.toBlocking()Observable轉換爲BlockingObservable;這給你堵的方法來等待完成,拿到一個項目,等

1

對於RxJava2使用「blockingSubscribe()

Flowable.fromArray(1, 2, 3) 
       .subscribeOn(Schedulers.computation()) 
       .blockingSubscribe(integer -> { 
        System.out.println(Thread.currentThread().getName()); 
       });