【问题标题】:Clear definition of coroutines dispatcher in kotlinkotlin 中协程调度器的明确定义
【发布时间】:2019-10-24 01:07:55
【问题描述】:

我正在尝试从 RxJava 迁移到我当前项目的协程。所以我在浏览官方文档时遇到了Dispatchers。根据官方文档,他们将 Dispatchers 定义为:

协程上下文包括一个协程调度器(参见 CoroutineDispatcher),它决定了哪个或哪些线程 相应的协程用于其执行。协程调度器 可以将协程执行限制在特定线程,将其分派到 线程池,或者让它不受限制地运行。

线程池是什么意思? Dispatchers.IODispatchers.Default 是不同的线程吗?我对这里的线程一词感到困惑。有人能解释一下这是如何工作的吗?

【问题讨论】:

    标签: multithreading kotlin kotlin-coroutines


    【解决方案1】:

    协程和线程是不同的概念。调度员也是如此。调度员更像是安排工作的执行者。这项工作在 Java 中的线程上运行。因此,本文档讨论了实际的 Java Thread。而thread pool 只管理多个线程。

    java.util.concurrent 中的大多数执行器实现都使用线程池,它由工作线程组成。这种线程与其执行的Runnable和Callable任务分开存在,常用于执行多个任务。

    【讨论】:

    • 我对这个话题很陌生。所以你的意思是Dispatchers.IO 将在池中拥有所有本机 IO 线程?如果是,那么我们在协程中获得的优势是什么?
    • 没有这样的东西。它只是Dispatchers.IO 使用的线程集合。我不确定管理的确切属性。协程的优势在于,它是一个用于异步编程的轻量级和广泛的框架。
    【解决方案2】:

    它们类似于 Schedulers.io()、Scheduler.computation()、Scheduler.newThread() 并抽象出线程池。

    【讨论】:

      猜你喜欢
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-25
      • 2022-01-05
      • 2019-07-16
      • 2020-04-08
      • 2020-10-09
      相关资源
      最近更新 更多