首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有大型并发请求的Rxjava2 Schedulers.io() vs Schedulers.computation()

具有大型并发请求的Rxjava2 Schedulers.io() vs Schedulers.computation()
EN

Stack Overflow用户
提问于 2018-04-05 19:44:31
回答 1查看 1.6K关注 0票数 2

我使用的是Rxjava2和弹簧引导。

我在服务器上有500个并发请求。

每个请求产生10个线程,它们调用其他服务(所以IO工作)。

所以在这种情况下,我应该使用Schedulers.io()还是Schedulers.compuatation()

基本上,我的困惑是,理想情况下,应该使用io(),因为这是IO工作,但这可能会创建大量线程?

我还可以指定计算线程的池大小吗?我还可以指定io线程的池大小吗?

EN

回答 1

Stack Overflow用户

发布于 2018-04-08 08:12:13

是使用Schedulers.io()还是使用Schedulers.compuatation()。

您希望调用其他服务,这是I/O工作,因此您的不应该使用computation()。因为最好将computation()留给CPU密集型工作,只有,否则您将无法获得良好的CPU利用率。

我可以指定计算线程的池大小吗?

不,computation()由一个大小等于(可用处理器数量)的有界线程池支持。因此,如果您想要生成10个线程,则不能由执行。

我可以指定io线程的池大小吗?

如果需要限制同步网络调用的最大数量,请使用:Scheduler.from(Executors.newFixedThreadPool(10))

这对用例来说是不必要的,因为您一次只执行10项任务。但是这是一个很好的实践,因为io()是无限的,如果您需要并行安排数百个任务,那么每个任务都会有自己的线程,并导致上下文切换开销。

有关更多信息,请参见:rxJava Schedulers Use Cases

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49680339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档