kotlin协程[6]:挂起函数与全局协程实例分析

上一篇最后对Kotlin中Lambda表达式传参这块进行了代码说明,由于这块比较容易引起混淆,所以再基于上次的程序再来巩固一下,先回顾一下上一次的程序:


基于此再来修改一下,再定义几个函数:

好,接下来咱们来调用一下:

其中是用方法引用的方式来生成一个Lambda表达式的实例,好,那下面看这段代码能否编译通过呢?

咱们打开注释就知道了,我觉得是编译不过的,因为目前test5的第二个Lambda是需要接收2个参数,而非上一次只有一个参数,那么我们在写Lambda时是不需要显示指定的,看一看猜测是否如此:

test5(5) { x, y ->
    run {
        println("$x - $y")
    }
}

挂起函数【suspend】:

在我们之前使用launch来创建协程时就看到过"suspend"关键字,回忆一下:


那这次来探究一下这个关键字的作用,先来对这个关键字进行理论化的说明:

“被suspend关键字所修饰的函数叫做挂起函数,挂起函数(suspending function)可以像普通函数一样用在协程当中,不过它的一个特性在于可以使用其他的挂起函数,重点:挂起函数只能用在协程或者另一个挂起函数中。”

好,下面咱们来看下示例:

下面咱们来调用一下:

运行一下:


以上就是关于挂起函数的说明,一般是用在协程当中的。

全局协程:

其实咱们之前就一起用过,如:


这里再单独对它进行一个阐述:“全局协程类似于守护线程(deamon thread)使用GlobalScope启动的活动协程并不会保持进程的生命,他们就像是守护线程一样。”

下面再来看下它的效果:


由于它是守护效果,所以当主线程退出,其协程中的代码也退出了,当然是不可能打印100次的啦,如下:


比如好理解,由于这个已经在之前大量用过了,就不多说了。

转自 https://www.cnblogs.com/webor2006/p/11732935.html

你可能感兴趣的:(kotlin协程[6]:挂起函数与全局协程实例分析)