Kotlin

kotlin协程的Job和SupervisorJob的一些笔记

2020-08-12  本文已影响0人  带带大湿兄
  1. Job是协程的默认context
  2. 子协程不会继承父协程的context,会使用默认值
  3. 协程的上下文为SupervisorJob时,该协程中的异常不会向外传播,因此不会影响其父亲/兄弟协程,也不会被其兄弟协程抛出的异常影响
  4. 正确使用SupervisorJob的方法
// job1、job2、job3和job4的上下文都是SupervisorJob

val scope = CoroutineScope(SupervisorJob()) 
job1 = scope.launch {...}
job2 = scope.launch {...}

supervisorScope { 
    job3 = launch {...}
    job4 = launch {...}
}
  1. launch(SupervisorJob()){...}只会使该协程的上下文变为SupervisorJob,其大括号内部的上下文依然是Job
上一篇 下一篇

猜你喜欢

热点阅读