我可以在RxJava中更改Schedulers.io()的行为吗?

时间:2017-06-19 16:55:51

标签: java rx-java rx-java2

根据this questionSchedulers.io()将创建无限数量的线程。在我的应用程序中,这是一个问题,因为我有数百个异步任务需要完成。

评论中的建议是使用Scheduler.from(Executors.newFixedThreadPool(n)),这是合理的,但使用模式与Schedulers.io()不同:

  • 使用Schedulers.io(),我可以在整个应用程序中重复使用相同的线程池,Rx将为我正确地调用shutdown
  • 使用Scheduler.from(Executors.newFixedThreadPool(n)),我必须在我的应用中提供Scheduler,并记得致电shutdown

问题:

  • 我可以调整Schedulers.io()的行为来使用有界线程池吗?
  • 建议使用Scheduler整个Rx应用程序的方法是什么,并确保它是shutdown正确的?

1 个答案:

答案 0 :(得分:0)

对于RxJava,您可以使用RxJavaHooks.onIOSchedulerScheduler作为Schedulers.io返回。但是你无法避免IOScheduler被创建。

对于RxJava2,您可以使用RxJavaPlugins.setInitIoSchedulerHandler直接通过IOScheduler初始化Scheduler