• Allen
    2022-02-14
    后面思考题的执行结果为: In async .... In async after delay.... 我的思考是 async 类比钓鱼,鱼钩已经扔出去了,钓鱼的这个动作已经开始了,只是我并没有拉杆。

    作者回复: 这个比喻很棒!

    共 5 条评论
    26
  • 面无表情的生鱼片
    2022-02-15
    老师用“射箭”和“钓鱼”来做比喻真是让人想忘都忘不掉! 不过我有一点关于思考题的反思: 虽然说 `async{}` 是不阻塞的,但是后续 `deferred.await()` 会阻塞。 严格意义上是否可以认为 `async{}` + `deferred.await()` 是阻塞的。 单用 `async()` 而不调用 `deferred.await()` 的情况应该使用 `launch{}`,在这种情况下老师列的表格中标注 `async{}` 是不阻塞是否意义不大?

    作者回复: 你的理解很到位。async{}对比launch{}的不同还是在于返回值,至于`async{}` 是不阻塞其实是对比runBlocking的。

    共 4 条评论
    8
  • Gavin
    2022-02-24
    对于GlobalScope有疑问,阅读了源码注释,也不是很清楚为什么GlobalScope不建议用,能帮忙解释下吗

    作者回复: GlobalScope最大的劣势,就是不具备“结构化并发”的能力。

    共 3 条评论
    7
  • Geek_Adr
    2022-02-20
    async != lazy await只是等待执行完,并不是触发执行

    作者回复: 总结很到位!

    共 2 条评论
    6
  • 魏全运
    2022-02-14
    思考题: In async:main In.async after delay! 请问这里是有什么让人容易忽略的细节吗?

    作者回复: 有些同学会认为deferred.await()如果不调用的话,async当中的代码就不会执行。

    共 5 条评论
    6
  • 遥远的救世主
    2022-05-27
    我用 Android Studio Chipmunk | 2021.2.1 Patch 1,设置VM 参数后调试协程名还是不打印,debug也没有协程那一项,Google 开发的工具不给力啊

    作者回复: 你得试试 JetBrains 的 IDE,Android Studio 的版本是落后与 JetBrains 的。

    
    4
  • neo
    2022-04-22
    你好,既然launch和runBlocking都不建议在生产环境中使用,只能使用async。 但是async也是需要CoroutineScope对象,但是GlobalScope也不建议使用,那我们在生产环境中应该使用怎样的方式来开启协程呢

    作者回复: 只是runBlocking不建议在生产环境使用。如果你是Android开发,官方为你提供了LifecycleScope、ViewModelScope。如果是其他端,则可以自己创建CoroutineScope。

    共 3 条评论
    3
  • PoPlus
    2022-02-22
    思考题:async 函数就像 launch 函数会异步执行,所以会输出结果。 只是 async 函数有个对应的 await 函数可以接收值,这个接收过程是阻塞式的。

    作者回复: 没错~

    
    2
  • ACE_Killer09
    2022-02-21
    fun main() { GlobalScope.launch { // 1 println("Coroutine started!") // 2 delay(1000L) // 3 println("Hello World!") // 4 } println("After launch!") // 5 Thread.sleep(2000L) // 6 println("Process end!") // 7 } /* 输出结果: After launch! Coroutine started! Hello World! Process end! */ 执行顺序为啥不是 1、5、6、2、3、4、7? 5 比 2 先执行是不是说明启动协程需要时间?

    作者回复: 应该是: 1、5、6、2、3、4、7,你没错。 5 比 2 先执行是不是说明启动协程需要时间?这其实是由一些其他协程参数决定的,你可以参考17讲的内容。

    共 2 条评论
    2
  • Geek_Albert.wu
    2022-05-22
    请教下教师,AbstractCoroutine.start()怎么调用的是自身啊?子类里也没看到有对应的实现啊

    作者回复: 后面《源码篇》里有对应的分析哈~

    
    