RxJava2.Xソースコード分析(4):RxJava2.Xスイッチングスレッドの有効性について

I.はじめに

デモからソースコード、パフォーマンスから内部実装の原則まで、4つの記事を書きました。ソースコードの分析を通じて、最初にRxJava2.Xのいくつかの基本的な操作と原則を学びました。次の点があります。1。ObservableとObserverはどのように機能するかサブスクリプション関係がありますか?、OnNext、onComplete、onErrorは、回数の制限および実装プロセス3と呼ばれます。なぜonSubscribeメソッドが最初に呼び出されるのですか?そして、ディスポーザブルを制御してサブスクリプションイベントをキャンセルする方法4、サブスクリプションスレッドとオブザーバースレッドを切り替えるRxJava2.Xのソースコードを2つの部分で
分析します。次に、以前の分析結果に基づいて、RxJava2.Xの複数のスイッチングスレッドの有効性を分析します。 。

二、具体分析

1.サブスクリプションイベントスレッドを切り替えることの有効性

RxJava2.Xソースコード分析(2):RxJava2でのサブスクリプションスレッド切り替えの原理を探り、サブスクリプションスレッド切り替えのソースコードを分析しました。

サブスクリプションイベントの送信は下から上へ、最後にアップストリームサブスクライバーへの送信でサブスクリプションプロセスを実行します(subscribeOn)

3つのレベルがあり、スレッドの切り替えが各レベルで発生するとします。

ダウンストリームオブザーバー(サブスクリプション)->レベル2オブザーバブル(呼び出し)レベル2オブザーバー(スイッチスレッド1サブスクリプション)->レベル1オブザーバブル(呼び出し)レベル1オブザーバー(スイッチスレッド2サブスクリプション)->アップストリームオブザーバブルは実際のサブスクリプションイベント配信データをトリガーします- >レベル1オブザーバー(受信後に配信)->レベル2オブザーバブル(受信後に配信)->ダウンストリームオブザーバー

もちろん、サブスクリプションスレッドを切り替えるためにAPIインターフェイスを呼び出したとしても、サブスクリプションイベントに実際に作用するスレッドは、アップストリームのObsevableに最も近いものです。RxJavaの呼び出し習慣によると、これは初めてなので、subscribeOnの呼び出しは初めて有効になります。

2.オブザーバースレッドの切り替えの有効性

RxJava2.Xソースコード分析でオブザーバーイベントスレッドスイッチのソースコードを分析しました(3)

サブスクリプションデータのデータストリームは上から下に送信され、最後にダウンストリームオブザーバー(ObserverOn)のonXXXコールバックメソッドに渡されます。

同様に、3つのレベルがあり、スレッドの切り替えが各レベルで発生するとします。

ダウンストリームオブザーバー(サブスクリプション)->レベル2オブザーバブル(コール)レベル2オブザーバブル(サブスクリプション)->レベル1オブザーバブル(コール)レベル1オブザーバブル(サブスクリプション)->アップストリームオブザーバブルは、実際のサブスクリプションイベントをトリガーしてデータを送信します->レベル1オブザーバー(接続後、スレッド1を切り替えてonXXXメソッドを呼び出してデータを送信します)->レベル2 Obsevser(スレッド1を切り替えてonXXXメソッドを呼び出して受信後にデータを送信します))->ダウンストリームObseverのonXXXコールバックメソッドを使用してデータを受信します

明らかに、オブザーバーの各レベルのonXXXメソッドは異なるスレッドで呼び出されます。したがって、observeOnの呼び出しは複数回有効になります

3.
OKを要約すると、この記事の長さは前の記事と比較して比較的満足のいくものです。

この記事を書く目的は2つです。1。最初の2つの記事の呼び出しシーケンスを整理します。2。observeOnとsubscribeOnの呼び出しシーケンスの影響と有効性を分析します。

おすすめ

転載: blog.csdn.net/qq_39431405/article/details/113523769