当前位置: 首页 > 知识库问答 >
问题:

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

呼延哲
2023-03-14

我已经阅读了很多关于rxjava调度器的答案,比如下面的用例,调度器io和调度器计算,rxjava2调度器io和具有大并发请求的调度器计算之间的区别是什么。

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

并使用调度程序。io()用于与文件系统交互、与数据库或服务交互、REST API调用

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

我的问题是

  1. 在Android系统中,什么是大数据集?(有形的感觉)

共有2个答案

翁良弼
2023-03-14

从rx的文档中:

调度员。计算( ) - 用于计算工作,如事件循环和回调处理;不要将此计划程序用于I/O(使用Schedulers.io( ) 相反);默认情况下,线程数等于处理器数

Schedulers.io ( ) - 用于I/O约束的工作,如阻塞I/O的异步性能,该调度程序由一个线程池支持,该线程池将根据需要增长;对于普通的计算工作,切换到Schedulers.computation();默认情况下,Schedulers.io()是一个CachedThreadScheduler,它类似于一个带有线程缓存的新线程调度器

郑翰海
2023-03-14

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

对于数据处理,需要使用调度程序。computation(),以及用于数据输入和输出的调度程序。io()

这样做是为了限制无限新线程的创建,从而创建一个作业队列。

 类似资料:
  • 我在couchbase中使用可观测值。 调度程序之间的区别是什么。io()和调度程序。计算()?

  • 为什么它们被用于不同类型的任务?它们在处理计算任务和io任务时有什么不同? schedulers.io()--用于I/O绑定的工作,如阻塞I/O的异步性能,该调度程序由线程池支持,线程池将根据需要增长;对于普通的计算工作,切换到Schedulers.Computation();默认情况下,schedulers.io()是一个CachedThreadScheduler,它类似于具有线程缓存的新线程调

  • 本文向大家介绍Vue.js v-if / v-else,包括了Vue.js v-if / v-else的使用技巧和注意事项,需要的朋友参考一下 示例 假设我们有一个Vue.js实例定义为: 您可以通过包含v-if指令有条件地呈现任何html元素;包含v-if的元素仅在条件评估为true时才会呈现: <h1>在这种情况下,该元素将呈现,因为变量'a'为true。v-if可以与任何计算结果为布尔值的表

  • 我正在使用Rxjava2和Spring Boot。 我在服务器上有500个并发请求。 每个请求产生10个线程,这些线程调用其他服务(因此IO工作)

  • 当它们处于同一节点,v-for的优先级比v-if更高,这意味着v-if将分别重复运行于每个v-for循环中。当你想为仅有的一些项渲染节点时,这种优先级的机制会十分有用,如下: <li v-for="todo in todos" v-if="!todo.isComplete"> {{ todo }} </li> 上面的代码只传递了未完成的 todos。 而如果你的目的是有条件地跳过循环的执行

  • v-if是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。 v-if也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。 相比之下,v-show就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。 一般来说,v-if有更高的切换开销,而v-show有更高的初始渲染开销。因