协程调度 与 生命周期

如题所述

第1个回答  2022-06-18

我们可以为协程指定上下文环境

当一个协程被其它协程在 CoroutineScope 中启动的时候, 它将通过 CoroutineScope.coroutineContext 来承袭上下文,并且这个新协程的 Job 将会成为父协程任务的 子 任务。当一个父协程被取消的时候,所有它的子协程也会被递归的取消。

然而, 当 GlobalScope 被用来启动一个协程时,它与作用域无关且是独立被启动的

一个父协程总是等待所有的子协程执行结束

在这个例子中我们使用 Dispatchers.Default 在后台线程池中启动了一个新的协程,所以它工作在线程池中的不同线程中
它仍然具有线程局部变量的值, 我们指定使用 threadLocal.asContextElement(value = "launch"), 无论协程执行在什么线程中都是没有问题的。

相似回答