Kotlin Coroutine 學習筆記

官方文件
https://kotlinlang.org/docs/reference/coroutines/basics.html

中文
https://www.kotlincn.net/

建議大家看的時候有個概念就好, 知道什麼時候好用、什麼時候該用到時再來詳細了解怎麼使用就好,我看完的感想是的確在某些時候是很方便的東西,未來可能會有更多的Library直接把Coroutine包起來 ,懂一些基本的關鍵字suspendasyncawait就夠用了。

先簡單介紹一下Coroutine(協程)的概念,我把他理解為比Thread(執行緒)小一階的執行單元,所以使用的資源更少,而Thread的上一階是Process(處理程序),一個Process 裏可以有很多的Thread ,一個Thread 裏可以有很多的Coroutine,而Coroutine的出現就是希望能簡化Thread操作與減少資源的使用(開太多Thread)。

因為透過官方文件學習時覺得他一口氣倒給讀者太多概念了,反倒會嚇退不少人,我這邊還是會採用官方的教材來說明,但會依照我自己覺得好吸收的順序來說明。

suspend(暫停)

用suspend這個關鍵字來宣告functions 表示這個functions 會被暫停也就是原本同步的概念。

上面兩個functions 執行結果會是one執行完,後再執行two最後再印出秒數,所以執行時間大於2000 ms

async(非同步)

就是表示這邊是透過非同的方式執行,不會停下來。

await(等待)

就表示會停在這邊等待非同步的執行結果回來。

上面的例子經過改寫之後就變成下圖那樣,one執行了馬上去執行two,而印出的部分因為使用了關鍵字 await 所以會等待one跟two兩個functions 執行完之後才會執行印出,所以時間是1000 ms左右。

Deferred(延遲)

用來表示等待回傳結果的物件。

以上面的例子說,如果不使用await會拿到什麼?答案是一個Deferred,但他其實也是一個Job所以可以被取消。
以上就是我覺得比較必要先理解的概念,剩下的細節就請大家透過官方文件自行學習吧

最後希望你帶走知識的同時,也能留下一兩句的心得與我們分享或是幫我們分享到FB

留言