RxJava 调度器在主线程上观察

RxJava Scheduler to observe on main thread

如果我这样写,那么both操作和通知都会在current线程上...

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

如果我像这样在后台线程上执行操作,那么 操作和通知都将在 background 线程上进行。 ..

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 程序,那么您希望在主线程上观察到的状态相当于什么?

通过.toBlocking()Observable转换为BlockingObservable;这为您提供了等待完成、获取一件物品等的阻塞方法

对于 RxJava2 使用“blockingSubscribe()

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