具有Observables的ThreadpoolExecutor

时间:2018-11-01 16:46:15

标签: multithreading rx-java observable scheduler threadpoolexecutor

嗨,我目前正在将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?哪种方法最好,请提出建议。

1 个答案:

答案 0 :(得分:2)

RxJava可以使用各种调度程序,例如使用Schedulers.from(threadPoolExecutor)。在一个项目中,对线程有一个严格的要求,即它们必须具有给定名称(通常带有数字),并且必须具有异常捕获器。使用Schedulers.from()可以很容易地将执行程序重新用作调度程序。

此外,Schedulers.io()调度程序相当有效地回收了线程。您可以在进行大量事务之后执行线程转储,以查看线程数量相对有限。