Kotlin如何在内部实现协同程序?
Coroutines被称为线程的"更轻版本",我知道它们在内部使用线程来执行协程.
当我使用任何构建器函数启动协程时会发生什么?
这是我对运行此代码的理解:
GlobalScope.launch { <---- (A)
val y = loadData() <---- (B) // suspend fun loadData()
println(y) <---- (C)
delay(1000) <---- (D)
println("completed") <---- (E)
}
Run Code Online (Sandbox Code Playgroud)
ThreadPool在开始时有一个预定义.(A),Kotlin开始在下一个可用的免费线程中执行协程(Say Thread01).(B),Kotlin停止执行当前线程,并loadData()在下一个可用的空闲线程(Thread02)中启动挂起功能.(B)执行后返回时,科特林延续了协程的下一个可用的空闲线程(Thread03).(C)执行Thread03.(D),Thread03停止.(E)在下一个免费线程上执行,比方说Thread01.我理解正确吗?或者协程以不同的方式实现?