2017-06-19 9 views
0

this questionによれば、Schedulers.io()は無限の数のスレッドを作成します。私のアプリケーションでは、完了するために何百もの非同期タスクがあるので、これは問題です。RxJavaでSchedulers.io()の動作を変更できますか?

コメントに勧告は妥当であるScheduler.from(Executors.newFixedThreadPool(n))を、使用することですが、使用パターンはSchedulers.io()に異なっている:私は、同じスレッド・プールスルーアウト再使用することができ、Schedulers.io()

  • 私Rxは私のためにshutdownを適切に呼び出します。
  • Scheduler.from(Executors.newFixedThreadPool(n))では、Schedulerを私のアプリケーションで利用できるようにしておき、shutdownと覚えておいてください。

質問:

  • 私はちょうど有界スレッドプールを使用するようにSchedulers.io()の振る舞いを調整することはできますか?
  • SchedulerスルーアウトをRxアプリケーションにスレッドし、正しくshutdownであることを確認するにはどうすればよいですか?
+0

多分['Schedulers.computation()'](http://reactivex.io/RxJava/javadoc/rx/schedulers/Schedulers.html#computation())はあなたが探しているものです – Lamorak

答えて

0

RxJavaについて、あなたはSchedulerSchedulers.ioとしてを返すためにRxJavaHooks.onIOSchedulerを使用することができます。しかし、IOSchedulerを作成することは避けられません。

RxJava2では、を使用して、Schedulerで直接IOSchedulerを初期化できます。

+0

例を教えてください'setInitIoSchedulerHandler'の? APIは私が期待したものではありません。 – sdgfsdh

+1

@sdgfsdh 'Schedulers'の初期化の前に' myScheduler'を 'IOScheduler'として設定するには' RxJavaPlugins.setInitIoSchedulerHandler(c - > mySchedler); 'を使います。 –

+0

'c'とは何ですか?後で私のコードに 'myScheduler'を処分する必要がありますか? – sdgfsdh

関連する問題