Rxjava2Schedulers.io()与具有大并发请求的Schedulers.count()的比较 [英] Rxjava2 Schedulers.io() vs Schedulers.computation() with large concurrent request
本文介绍了Rxjava2Schedulers.io()与具有大并发请求的Schedulers.count()的比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用的是带有Spring Boot的Rxjava2。
我在服务器上有500个并发请求。
每个请求派生10个线程,这些线程调用其他服务(因此IO工作)
因此,在这种情况下,我应该使用Schedulers.io()
还是Schedulers.compuatation()
。
还可以指定计算线程的池大小吗? 另外,我是否可以指定io线程的池大小?
推荐答案
我应该使用Schedulers.io()还是Schedulers.Compuatation()。
您要调用其他服务,这是I/O工作,因此不应使用computation()
。因为最好将computation()
留给CPU密集型工作,否则无法获得良好的CPU利用率。
我可以指定计算线程的池大小吗?
否,computation()
由一个大小等于可用处理器数的有界线程池支持。因此,如果要派生10个线程,无法这样做。
我是否可以指定io线程的池大小
如果需要限制同时进行的网络调用的最大数量,请使用:Scheduler.from(Executors.newFixedThreadPool(10))
io()
是无界的,如果您需要并行调度数百个任务,则每个任务都将拥有自己的线程,并导致上下文切换开销。
有关详细信息,请参阅:href="https://stackoverflow.com/a/31282775/5282585">rxJava调度程序用例
。
这篇关于Rxjava2Schedulers.io()与具有大并发请求的Schedulers.count()的比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文