RxJava Scheduler在主线程

时间:2017-06-20 16:23:36

标签: rx-java rx-java2

如果我写这样的话,那么两者操作和通知将在当前主题上...

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 个答案:

答案 0 :(得分:5)

通过ObservableBlockingObservable转换为.toBlocking();这为你提供了阻止等待完成的方法,获得一个项目等等。

答案 1 :(得分:4)

对于RxJava2,请使用“blockingSubscribe()

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