Immediate scheduler
を使用する場合と使用しない場合の違いは何ですか?即時スケジューラとスケジューラをまったく使用しない場合の相違
Observable.create(subscriber -> subscriber.onNext(new Object())).subscribeOn(Schedulers.immediate()).subscribe();
//vs
Observable.create(subscriber -> subscriber.onNext(new Object())).subscribe();
即時スケジューラがSleepingAction
を使用し、即座にそれを実行します:
this.schedule(new SleepingAction(action, this, execTime));
しかし、それは実際にはすぐにではないようで、可能な遅延があります:
long delay = this.execTime - this.innerScheduler.now();
Thread.sleep(delay);
だから私はとの権利という違いですImmediate scheduler
を使用し、スケジューラをまったく使用しないことは可能な遅延ですか?
それはこのようなクラスを持つ例えば 単体テストのために 'Schedulers.trampoline()'を使うのが良いです。すぐにブロッキングスリープが発生するため、2.xから完全に削除する予定です。出典:https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0-(draft) – LordRaydenMK
'trampoline()'もブロッキングスリープを使用しますが、 'immediate'よりも利点は、再帰的にスケジュールできることですそれと。 –