我正在尝试从RxJava迁移到我当前项目的协程。因此,我正在查阅官方文档,并且遇到了Dispatchers
。根据官方文件,他们将调度程序定义为:
协程上下文包括协程调度程序(请参阅 CoroutineDispatcher)确定哪个线程 相应的协程用于执行。协程调度员 可以将协程执行限制在特定线程中,将其分派给 线程池,或者让它不受限制地运行。
线程池是什么意思? Dispatchers.IO
或Dispatchers.Default
是不同的线程吗?我对这里的“线程”一词感到困惑。有人可以解释它的工作原理吗?
答案 0 :(得分:1)
协程和线程是不同的概念。调度员也是如此。调度员更像是执行者来安排工作。这项工作在 Java 中的线程上运行。因此,本文档讨论了实际的 Java Thread
。 thread pool仅管理多个线程。
java.util.concurrent中的大多数执行程序实现都使用线程池,该线程池由工作线程组成。这种线程与它执行的Runnable和Callable任务分开存在,通常用于执行多个任务。
答案 1 :(得分:0)
它们类似于Schedulers.io(),Schedulers.computation(),Schedulers.newThread()和抽象线程池。