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

  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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容