suspend fun main(args: Array<String>) {
Logger.debug(3)
val job = GlobalScope.launch(
/*这个是我们自己自定义的上下文,但是这个上下文中我们并没有去创建调度器 (那么正常也是没有线程切换调度的) */
MyContinuationInterceptor()
+ CoroutineName("HelloWorld")) {
Logger.debug(1)
delay(1000)
Logger.debug(2)
}
job.join()
Logger.debug(4)
}
关于这行代码,在调用delay之后,会切换协程 那么1/2执行会在一个线程3/4会在另一个线程,运行的结果也是这样的。但是这样有些想不通,因为这段代码中的自定义上下文中我是没有创建调度器的 也就是说默认执行在主线程。那么我调用了delay挂起之后就变成了另一个线程 同时这段代码以后都所有代码都执行在这个线程(尤其是4,我已经写在协程方法体之外了,看代码感觉应该是在main线程 但是还是指定在delay创建的线程)感觉这样有些误导,感谢老师帮我指点一下。