web-dev-qa-db-ja.com

Schedulers.io()とSchedulers.computation()の違いは何ですか

Observablesをcouchbaseで使用しています。

Schedulers.io()Schedulers.computation()の違いは何ですか?

20

rxのドキュメント から:

Schedulers.computation() -イベントループやコールバック処理などの計算作業用。このスケジューラをI/Oに使用しないでください(代わりにSchedulers.io()を使用してください)。デフォルトでは、スレッドの数はプロセッサの数と同じです


Schedulers.io() -ブロッキングI/Oの非同期パフォーマンスなどのI/Oバウンド作業用で、これはスケジューラは、必要に応じて拡大するスレッドプールによってサポートされます。通常の計算作業の場合は、Schedulers.computation();に切り替えます。 Schedulers.io()は、デフォルトでCachedThreadSchedulerです。これは、スレッドキャッシュを備えた新しいスレッドスケジューラのようなものです。

16
Reut Sharabani

RxJavaスケジューラの簡単な紹介。

  • Schedulers.io() –これは、ネットワークコールの作成、ディスク/ファイルの読み取り、データベース操作など、CPUを集中的に使用しない操作を実行するために使用されます。これにより、スレッドのプールが維持されます。

  • Schedulers.newThread() –これを使用すると、タスクがスケジュールされるたびに新しいスレッドが作成されます。通常、非常に長時間実行されるオペレーションがない限り、スケジューラを使用しないことをお勧めします。 newThread()で作成されたスレッドは再利用されません。

  • Schedulers.computation() –このスケジューラは、巨大なデータの処理、ビットマップ処理などのCPU集中型の操作を実行するために使用できます。このスケジューラを使用して作成されるスレッドの数は、使用可能なCPUコアの数に完全に依存します。

  • Schedulers.single() –このスケジューラは、すべてのタスクを追加された順に実行します。逐次実行が必要な場合に使用できます。

  • Schedulers.immediate() –このスケジューラは、メインスレッドをブロックすることにより、同期的にタスクをすぐに実行します。 Schedulers.trampoline()–先入れ先出し方式でタスクを実行します。バックグラウンドスレッドの数を1つに制限することにより、スケジュールされたすべてのタスクが1つずつ実行されます。

  • Schedulers.from() –これにより、作成するスレッドの数を制限することにより、エグゼキュータからスケジューラを作成できます。スレッドプールが占有されると、タスクはキューに入れられます。

0
akhilesh0707