RxJavaでバックプレッシャーのためにいくつかのドキュメントを読んでいますが、ライブラリ内でどのように内部的に起こるかなど詳細な説明は見つかりませんでした。 「消費者」が遅すぎる。以下のコードのような例えば BackpressureはRxJavaの内部でどのように起こるのですか
:Observable.interval(1, TimeUnit.MILLISECONDS)
.observeOn(Schedulers.newThread())
.subscribe(
i -> {
System.out.println(i);
try {
Thread.sleep(100);
} catch (Exception e) { }
},
System.out::println);
アイブ氏は、私の理解は、メインスレッドで、我々はつもりであるということですので、RxJavaのソースコードを経由して
があらゆるミリ秒単位でイベントを発行し、我々はそれを放出した後、我々は合格値をSystem.out.println(i)メソッドに渡して、newTheadスケジューラのスレッドプールにスローし、runnable内でメソッドを実行します。
私の質問は、例外はどのように内部的に発生するのですか? Thread.sleep()を呼び出すと、スレッドプール内の他のスレッドに影響を与えずに、メソッド呼び出し - > System.out.println()を処理するスレッドがスリープしているだけです。なぜなら、スレッドプールは十分なスレッドをもう使えないからですか?
Thanks
RxJavaの一部の演算子は、キューまたはバッファのデータ構造体にonNext()イベントを配置すると言っていますか?例外はスレッドプールによるものではありません;) – Qing