首页 > 解决方案 > Kotlin 内部的延迟函数是如何工作的?

问题描述

我一直试图了解 Kotlin 协程是如何工作的,并且遇到了这个delay函数。

我对这部作品的理解是,

我的理解正确吗?delay此外,调用的线程和执行调用之后的代码的线程之间是否存在关系delay

谢谢!

标签: asynchronouskotlincoroutinekotlin-coroutines

解决方案


是的。你的理解是正确的。JS 和 Kotlin 的区别在于,用于执行延续的任务队列可以由程序员通过CoroutineDispatcher. delay通常,调用的线程与计划继续进行恢复的线程之间没有关系。它由两个因素决定:

  • 如果协程使用Unconfined调度器,那么继续执行的线程是在内部使用的某个系统定时器线程delay。您可以编写自己的版本,在您选择的线程上delay恢复Unconfined延续。

  • 如果协程使用某个受限的调度程序,那么它会在该调度程序定义的线程或线程池上恢复。开箱即用地提供了许多调度程序。例如,在使用UI调度程序的 Android 中,协程将始终在 AndroidUI线程上恢复。一般来说,在 Kotlin/JVM 中,您可以使用任何扩展名Executor并将其转换为CoroutineDispatcher使用asCoroutineDispatcher扩展名。


推荐阅读