官方文件
https://kotlinlang.org/docs/reference/coroutines/basics.html
最後希望你帶走知識的同時,也能留下一兩句的心得與我們分享或是幫我們分享到FB
https://kotlinlang.org/docs/reference/coroutines/basics.html
中文
https://www.kotlincn.net/
建議大家看的時候有個概念就好, 知道什麼時候好用、什麼時候該用到時再來詳細了解怎麼使用就好,我看完的感想是的確在某些時候是很方便的東西,未來可能會有更多的Library直接把Coroutine包起來 ,懂一些基本的關鍵字suspend、async、await就夠用了。
https://www.kotlincn.net/
建議大家看的時候有個概念就好, 知道什麼時候好用、什麼時候該用到時再來詳細了解怎麼使用就好,我看完的感想是的確在某些時候是很方便的東西,未來可能會有更多的Library直接把Coroutine包起來 ,懂一些基本的關鍵字suspend、async、await就夠用了。
先簡單介紹一下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
留言
張貼留言
有什麼想法歡迎跟我們分享