android之GlobalScope(协程)使用介绍

2021-01-21 10:36:01 浏览数 (1)

image.png

什么是协程

协程(Coroutines)是一种比线程更加轻量级的存在,正如一个进程可以拥有多个线程一样,一个线程可以拥有多个协程。

image.png

有一点必须明确的是,一个线程的多个协程的运行是串行的。 如果是多核CPU,多个进程或一个进程内的多个线程是可以并行运行的,但是一个线程内协程却绝对是串行的,无论CPU有多少个核。毕竟协程虽然是一个特殊的函数,但仍然是一个函数。一个线程内可以运行多个函数,但这些函数都是串行运行的。

当一个协程运行时,其它协程必须挂起。

GlobalScope.lunch

GlobalScope.launch用于启动了一个运行在子线程的顶层协程。

GlobalScope继承于CoroutineScope(协程的生命周期),表示此协程的生命周期随应用程序的生命周期。 实例:

代码语言:javascript复制
fun main() {
    GlobalScope.launch {    
       // 在应用程序的生命周期内启动一个新的协程并继续
        delay(1000L)       
       // 非阻塞的等待1秒钟
        println("【${Thread.currentThread().name}】World!")
    }
    println("【${Thread.currentThread().name}】Hello,")
    Thread.sleep(2000L)    
    // 阻塞的等待2秒钟,因为协程的生命周期受应用程序生命周期限制,所以这里保证协程内部逻辑执行完
}

运行结果:

代码语言:javascript复制
【main】Hello,
【DefaultDispatcher-worker-1】World!

0 人点赞