我在try 理解协程是如何工作的.我有这样一段简单的代码,它挂起协程并在不同的线程中恢复它.
fun main(){
fun pt(msg : String){
println("${Thread.currentThread().name}: ${msg}")
}
suspend fun a(){
pt("A")
suspendCoroutine { cont ->
thread (name = "new thread") {
pt("resuming")
cont.resume(Unit)
}
}
pt("B")
}
runBlocking {
a()
}
}
由于协程在new thread
中恢复,我本以为B的打印也是由这个线程完成的,但似乎并非如此.
main: A
new thread: resuming
main: B
有人能解释一下这是怎么回事吗?启动Continue对象的协程部分并且resume
调用将执行传递给它的原始线程是吗?