繁体   English   中英

RxJava/RxAndroid 中的 Schedulers.computation() 与 Schedulers.io()

[英]Schedulers.computation() v/s Schedulers.io() in RxJava/RxAndroid

我已经阅读了很多关于 SO 的答案,例如以下use-cases-for-rxjava-schedulerswhat-is-the-difference-between-schedulers-io-and-schedulers-computationrxjava2-schedulers-io-vs- schedulers-computation-with-large-concurrent-request

最常见的解释是使用Schedulers.computation() 进行 CPU 密集型工作

并使用Schedulers.io() 与文件系统交互,与数据库或服务交互,REST API 调用

通过 CPU 密集型工作,我假设/考虑图像调整大小/操作、大数据集等(如果您知道通常在 Android 应用程序上执行的任务,请添加一些其他 CPU 密集型任务)

我的问题是

  1. Android 中的大数据集是什么? (有形的感觉)
  2. 如果对数据库的网络调用或查询以庞大的数据集(根据问题 1)响应,那么会怎样?

事实上,它们只是使用不同的线程池,因此需要用于它们的预期目的。

对于数据处理,您需要使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM