我在春季启动中使用Rxjava2。
我在服务器上有500个并发请求。
每个请求产生10个线程,这些线程调用其他服务(因此IO工作)
因此,在这种情况下,我应该使用Schedulers.io()还是Schedulers.compuatation()。
基本上,我的困惑是理想上io()应该使用的,因为这是IO工作,但这会创建大量线程吗?
还可以指定计算线程的池大小吗?还可以指定io线程的池大小吗?
我应该使用Schedulers.io()还是Schedulers.compuatation()。
您想调用其他服务,因为它是I / O工作,所以您不应使用computation()。因为它是最好保留computation()为CPU密集型工作只否则你不会得到良好的CPU使用率。
我可以指定计算线程的池大小吗?
不,computation()由有界线程池支持,该线程池的大小等于可用处理器的数量。因此,如果您希望产生10个线程,则无法执行。
我可以指定io线程的池大小吗
如果需要限制同时进行网络呼叫的最大数量,请使用: Scheduler.from(Executors.newFixedThreadPool(10))
对于您的用例而言,这是不必要的,因为您一次只能执行10个任务。但这是一个好习惯,因为它io()是不受限制的,并且如果您需要并行调度数百个任务,那么每个任务将拥有自己的线程并导致上下文切换开销。
有关更多信息,请参见:rxJava Schedulers用例 。
| 归档时间: |
|
| 查看次数: |
639 次 |
| 最近记录: |