挂起函数与全局协程实例分析

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

 

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

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

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

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

挂起函数【suspend】:

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

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

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

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

下面咱们来调用一下:

运行一下:

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

全局协程:

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

 

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

下面再来看下它的效果:

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

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

原文地址:https://www.cnblogs.com/webor2006/p/11732935.html