android之GlobalScope(協程)使用介紹

什麼是協程

協程(Coroutines)是一種比線程更加輕量級的存在,正如一個進程可以擁有多個線程一樣,一個線程可以擁有多個協程。

有一點必須明確的是,一個線程的多個協程的運行是串行的。
如果是多核CPU,多個進程或一個進程內的多個線程是可以並行運行的,但是一個線程內協程卻絕對是串行的,無論CPU有多少個核。畢竟協程雖然是一個特殊的函數,但仍然是一個函數。一個線程內可以運行多個函數,但這些函數都是串行運行的。

當一個協程運行時,其它協程必須掛起。

GlobalScope.lunch

GlobalScope.launch用於啓動了一個運行在子線程的頂層協程。

GlobalScope繼承於CoroutineScope(協程的生命週期),表示此協程的生命週期隨應用程序的生命週期。
實例:

fun main() {
    GlobalScope.launch {    
       // 在應用程序的生命週期內啓動一個新的協程並繼續
        delay(1000L)       
       // 非阻塞的等待1秒鐘
        println("【${Thread.currentThread().name}】World!")
    }
    println("【${Thread.currentThread().name}】Hello,")
    Thread.sleep(2000L)    
    // 阻塞的等待2秒鐘,因爲協程的生命週期受應用程序生命週期限制,所以這裏保證協程內部邏輯執行完
}

運行結果:

【main】Hello,
【DefaultDispatcher-worker-1】World!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章