launch 启动协程 , 该协程运行在主线程中 ,
运行到 delay(2000) 代码时 , 该 delay 函数是挂起函数 , 主线程会被挂起 , 主线程被调度器调度 , 执行其它的操作 如 刷新..., 则协程直接取消 ;
如果在主线程中执行协程 , 协程挂起后 , 主线程继续执行其它任务, 如刷新 UI 等 , 主线程不会阻塞 , 挂起函数会在子线程中执行 ;
一般会将耗时操作放在 协程的挂起函数..., 立即在当前的 函数调用栈 执行协程任务 , 直到遇到第一个挂起函数 , 才在子线程中执行挂起函数 ;
如果在主线程中启动协程 , 则该模式的协程就会直接在主线程中执行 ;
如果在子线程中启动协程 ,...: ${Thread.currentThread()}")
// 遇到挂起函数会在子线程执行该挂起函数
// 挂起函数都是耗时任务
delay(2000...但是,当从挂起恢复协程时
* 它根据上下文中的[CoroutineDispatcher]进行分派。