嗨,我目前正在将Schedulers.io()与Observables用于我的进行网络调用的api。我担心的是,如果有大量请求,那么在生产环境中可能会创建很多线程。我预计每天大约有50万至70万个请求。在这种情况下,Schedulers.io()是很好的候选人吗?
或者我应该创建一个自定义threadpoolExecutor并将其用作Schedulers.from(myExecutor)
//Sample
ThreadPoolExecutor myExecutor= new ThreadPoolExecutor(corePoolSize,
maxPoolSize, poolKeepAliveInMillis, TimeUnit.MILLISECONDS,
new ArrayBlockingQueue<Runnable>(corePoolSize));
我在网上看到的所有示例都使用了诸如Schedulers.from(Executors.newFixedThreadPool(n))之类的固定线程池。
Rx Java Scheduler是否支持ThreadPoolExecutor?哪种方法最好,请提出建议。
答案 0 :(得分:2)
RxJava可以使用各种调度程序,例如使用Schedulers.from(threadPoolExecutor)
。在一个项目中,对线程有一个严格的要求,即它们必须具有给定名称(通常带有数字),并且必须具有异常捕获器。使用Schedulers.from()
可以很容易地将执行程序重新用作调度程序。
此外,Schedulers.io()
调度程序相当有效地回收了线程。您可以在进行大量事务之后执行线程转储,以查看线程数量相对有限。