作者回复: 这个比喻很棒!
作者回复: 你的理解很到位。async{}对比launch{}的不同还是在于返回值,至于`async{}` 是不阻塞其实是对比runBlocking的。
作者回复: GlobalScope最大的劣势,就是不具备“结构化并发”的能力。
作者回复: 总结很到位!
作者回复: 有些同学会认为deferred.await()如果不调用的话,async当中的代码就不会执行。
作者回复: 你得试试 JetBrains 的 IDE,Android Studio 的版本是落后与 JetBrains 的。
作者回复: 只是runBlocking不建议在生产环境使用。如果你是Android开发,官方为你提供了LifecycleScope、ViewModelScope。如果是其他端,则可以自己创建CoroutineScope。
作者回复: 没错~
作者回复: 应该是: 1、5、6、2、3、4、7,你没错。 5 比 2 先执行是不是说明启动协程需要时间?这其实是由一些其他协程参数决定的,你可以参考17讲的内容。
作者回复: 后面《源码篇》里有对应的分析哈~