2017-06-20 48 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()); 
       });