少し:
私はについての説明を読んでいるblockingSubscribe()
と、subscribe()
どちらも私は書くことも、これらの違いを見るために例を見つけることができます。これらの両方が同じように動作しているようです。誰かが好ましく、Javaで、これらの2の例を提供することができます。
Akrnokd:
blockingSubscribe
現在のスレッドをブロックして、そこにincomnigイベントを処理します。あなたは、いくつかの非同期ソースを実行することで、これを見ることができます:
System.out.println("Before blockingSubscribe");
System.out.println("Before Thread: " + Thread.currentThread());
Observable.interval(1, TimeUnit.SECONDS)
.take(5)
.blockingSubscribe(t -> {
System.out.println("Thread: " + Thread.currentThread());
System.out.println("Value: " + t);
});
System.out.println("After blockingSubscribe");
System.out.println("After Thread: " + Thread.currentThread());
subscribe
そのような閉じ込めを与えないし、任意のスレッド上で実行することがあります。
System.out.println("Before subscribe");
System.out.println("Before Thread: " + Thread.currentThread());
Observable.timer(1, TimeUnit.SECONDS, Schedulers.io())
.concatWith(Observable.timer(1, TimeUnit.SECONDS, Schedulers.single()))
.subscribe(t -> {
System.out.println("Thread: " + Thread.currentThread());
System.out.println("Value: " + t);
});
System.out.println("After subscribe");
System.out.println("After Thread: " + Thread.currentThread());
// RxJava uses daemon threads, without this, the app would quit immediately
Thread.sleep(3000);
System.out.println("Done");