![](/img/trans.png)
[英]What are the differences in the implementation of Schedulers.computation and Schedulers.io?
[英]Schedulers.computation() v/s Schedulers.io() in RxJava/RxAndroid
我已经阅读了很多关于 SO 的答案,例如以下use-cases-for-rxjava-schedulers 、 what-is-the-difference-between-schedulers-io-and-schedulers-computation 、 rxjava2-schedulers-io-vs- schedulers-computation-with-large-concurrent-request 。
最常见的解释是使用Schedulers.computation() 进行 CPU 密集型工作
并使用Schedulers.io() 与文件系统交互,与数据库或服务交互,REST API 调用
通过 CPU 密集型工作,我假设/考虑图像调整大小/操作、大数据集等(如果您知道通常在 Android 应用程序上执行的任务,请添加一些其他 CPU 密集型任务)
我的问题是
事实上,它们只是使用不同的线程池,因此需要用于它们的预期目的。
对于数据处理,您需要使用Schedulers.computation()
,对于数据输入和 output Schedulers.io()
这样做是为了限制无限新线程的创建,从而创建作业队列。
从rx 的文档:
Schedulers.computation( ) - 用于计算工作,例如事件循环和回调处理; 不要将此调度程序用于 I/O(改为使用 Schedulers.io( )); 默认情况下,线程数等于处理器数
Schedulers.io( ) - 用于 I/O 绑定工作,例如阻塞 I/O 的异步性能,这个调度器由一个线程池支持,该线程池将根据需要增长; 对于普通的计算工作,切换到 Schedulers.computation( ); Schedulers.io( ) 默认是一个 CachedThreadScheduler,它类似于一个新的线程调度器,带有线程缓存
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.