根据this question,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 :(得分:0)
对于RxJava,您可以使用RxJavaHooks.onIOScheduler
将Scheduler
作为Schedulers.io
返回。但是你无法避免IOScheduler
被创建。
对于RxJava2,您可以使用RxJavaPlugins.setInitIoSchedulerHandler
直接通过IOScheduler
初始化Scheduler
。