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

时间:2015-10-27 14:14:04

标签: couchbase rx-java observable

在couchbase中,Observables

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

2 个答案:

答案 0 :(得分:15)

来自documentation of rx

  

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

  

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

答案 1 :(得分:5)

RxJava调度程序的简要介绍。

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

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

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

  • Schedulers.single() –此调度程序将按添加任务的顺序执行所有任务。当需要顺序执行时可以使用它。

  • Schedulers.immediate() –该调度程序通过阻塞主线程以同步方式立即执行任务。 Schedulers.trampoline()–以先进先出的方式执行任务。通过将后台线程数限制为一个,所有调度的任务将一一执行。

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