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
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容