霍~霍~霍霍,霍老师有个疑问,我发现不管hello方法里面启动的线程是否是守护线程,都会直接结束,不会等待launch内协程结束。
来源:12-2 案例:仿官方框架实现 launch 2

慕妹2253574
2023-06-26
我想了下,
1.suspend main 会启动一个协程A,加入join方法调用后 会将协程A挂起,在launch运行结束后会恢复协程A,所以launch才会执行完。
2.如果不调用join方法,suspend main 会启动的协程A不会真正的挂起,直接就运行结束了。所以launch内的log不会打印。
所以,launch 中协程能运行结束,与hello方法中的启动线程是否是守护线程没有关系。
麻烦霍老师看下是不是这样的。
写回答
3回答
-
如果不是守护进程的话,进程不会退出。当然main函数里面如果不调用jobA.join,自然也不会等协程jobA执行完,但这不影响进程自身的退出。022023-06-28
-
bennyhuo
2023-06-27
同学有问题可以进一步交流哈,也建议把你的代码直接贴出来分析,免得我理解错你的意思。00 -
bennyhuo
2023-06-27
join挂起的是当前协程,也就是说,
val jobA = launch ....
jobA.join()
这里挂起的并不是jobA,而是所在的协程。你的例子里面就是suspend main自己所在的协程。00
相似问题