Schedulers.io()和Schedulers.computation()之间的区别是什么

Osa*_*tar 15 observable couchbase rx-java

在沙发基地,Observables

有什么区别:Schedulers.io()和Schedulers.computation()

akh*_*707 36

RxJava 调度器简介。

  • Schedulers.io() – 用于执行非 CPU 密集型操作,如进行网络调用、读取磁盘/文件、数据库操作等,它维护一个线程池。

  • Schedulers.newThread() – 使用它,每次调度任务时都会创建一个新线程。通常建议不要使用调度程序,除非有很长时间运行的操作。通过 newThread() 创建的线程不会被重用。

  • Schedulers.computation() – 此调度程序可用于执行 CPU 密集型操作,例如处理大量数据、位图处理等,使用此调度程序创建的线程数完全取决于可用的 CPU 内核数。

  • Schedulers.single() – 该调度器将按添加的顺序执行所有任务。这可以在需要顺序执行时使用。

  • Schedulers.immediate() – 该调度器通过阻塞主线程以同步方式立即执行任务。

  • Schedulers.trampoline() - 它以先进先出的方式执行任务。将后台线程数限制为1个,将所有计划任务一一执行。

  • Schedulers.from() – 这允许我们通过限制要创建的线程数从执行程序创建调度程序。当线程池被占用时,任务将排队。


Reu*_*ani 19

rx文档:

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


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

  • 有什么不同? (7认同)
  • @ReutSharabani他的意思是,*“它们的实现有什么区别* **此外** *可用线程的数量?” * (2认同)