1:什么是協(xié)程,kotlin協(xié)程是什么。
2:kotlin開(kāi)啟協(xié)程的方式
launch async+await
兩者最主要區(qū)別
異常處理:
launch內(nèi)部可能會(huì)拋出異常,因此需用戶手動(dòng)進(jìn)行處理。而async默認(rèn)不會(huì)拋出異常,因?yàn)樗鼤?huì)認(rèn)為你最終必須調(diào)用await來(lái)獲取結(jié)果,因此,async內(nèi)部如果出現(xiàn)異常,用戶需要在await處進(jìn)行捕獲。返回值:一個(gè)最重大的區(qū)別就是,
launch函數(shù)返回的是一個(gè)Job對(duì)象,該對(duì)象主要用于取消協(xié)程運(yùn)行,而async函數(shù)返回的是一個(gè)Deferred對(duì)象,該對(duì)象不僅可以用于取消協(xié)程,更重要的是可以獲取異步任務(wù)返回結(jié)果!這是相當(dāng)有用的一個(gè)特性,如下代碼所示:
協(xié)程作用域的概念
CoroutineScope
GlobalScope
MainScope
創(chuàng)建子協(xié)程域
coroutineScope{}
這個(gè)api主要用于方便地創(chuàng)建一個(gè)子域,并且管理域中的所有子協(xié)程。注意這個(gè)方法只有在所有 block中創(chuàng)建的子協(xié)程全部執(zhí)行完畢后,才會(huì)退出
supervisorScope{}
區(qū)別是supervisorScope 在子協(xié)程失敗時(shí)不影響其他子協(xié)程,而coroutineScope是將異常拋出。
suspend
這種函數(shù)只能在另一個(gè)suspend函數(shù)或者協(xié)程里面被調(diào)用。
3:kotlin協(xié)程的簡(jiǎn)單用法


