[解決済み] 観測可能なものと流動的なもの rxJava2
質問
新しいrx java 2を見たのですが、以下の考え方がよくわかりません。
backpressure
もう...。
があることは承知しています。
Observable
を持たないもの。
backpressure
をサポートし
Flowable
それがあること。
では、例として、私が
flowable
と
interval
:
Flowable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
// do smth
}
});
これは128の値の後にクラッシュしそうで、それは私がアイテムを得るよりも遅い消費していることは明らかです。
しかし、その後、同じように
Observable
Observable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
// do smth
}
});
これは全くクラッシュしませんし、消費に多少の遅延を与えてもまだ動作します。そこで
Flowable
は、例えば
onBackpressureDrop
演算子を使用すると、クラッシュはなくなりますが、すべての値が出力されるわけでもありません。
つまり、私の頭の中で現在答えが見つかっていない基本的な疑問は、なぜ私が
backpressure
を使用することができます。
Observable
を管理することなく、すべての値を受け取ることができます。
buffer
? あるいは、反対側からの意見として
backpressure
消費するものを管理し、処理することに有利になるのでしょうか?
どのように解決するのですか?
背圧が実際に顕在化するのは、バッファの束縛です。
Flowable.observeOn
は128要素のバッファを持ち、下流がそれを受け入れることができるのと同じくらい速く排出されます。このバッファサイズは、バースト的なソースを扱うために個別に増やすことができ、すべてのバックプレッシャーマネジメントは1.xから適用されます。
Observable.observeOn
は、要素を収集し続ける無限のバッファを持ち、アプリはメモリ不足になる可能性があります。
を使用することができます。
Observable
を例にとります。
- GUIイベントの処理
- 短いシーケンス(合計1000要素以下)の処理
を使用することができます。
Flowable
を例にとります。
- コールドソースとノンタイムドソース
- ジェネレーターライクソース
- ネットワークとデータベースへのアクセサー
関連
-
myeclipseでコンパイルするとAntエラーが発生する javaの例外が発生しました。
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
final, finally, finalizeの違いについて話してください。
-
VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/Object
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
HttpClientがGZIP形式でない場合の対処法
-
ローカルリソースのロードが許可されていない場合の解決策
-
[解決済み】AndroidでRxJava ObservableとシンプルなCallbackを使うべきタイミングは?
-
[解決済み】CompletableFutureとFutureとRxJavaのObservableの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スレッド "main "での例外をEclipseで解決 java.lang.Error: 未解決のコンパイル問題、コンパイラとパッケージの不整合
-
java の例外が発生しました java
-
jd-gui Java Exceptionが発生しました。
-
eclipse アクセス制限です。タイプ 'xxx' は API ではありません(必須ライブラリ '' の制限)。
-
スキャナは、タイプに解決することはできません最もルーキー初心者の質問
-
Spring boot runs with Error creating bean with name 'entityManagerFactory' defined in class path resource
-
Java コンパイルエラー - スレッド "main" で例外 java.lang.Error: 未解決のコンパイル問題です。
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl クラスを初期化できませんでした。
-
Error: java.lang.NoClassDefFoundError: クラス XXXX を初期化できませんでした