web-dev-qa-db-ja.com

メインスレッドで監視するRxJavaスケジューラー

このようなものを書くと、-両方操作と通知はcurrentスレッドになります...

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

このようなバックグラウンドスレッドで操作を行うと、both操作と通知は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プログラムを記述している場合、メインスレッドで観察したい状態に相当するものは何ですか?

15
Eurig Jones

ObservableBlockingObservableに変換するには、.toBlocking()を使用します。これは、完了を待つ、1つのアイテムを取得するなどのブロッキングメソッドを提供します。

6

RxJava2の場合は、「blockingSubscribe()」を使用します

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