美文网首页
kotlin协程[6]:挂起函数与全局协程实例分析

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

作者: 瑜小贤 | 来源:发表于2021-10-22 11:10 被阅读0次

    上一篇最后对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]:挂起函数与全局协程实例分析

          本文链接:https://www.haomeiwen.com/subject/kgwtaltx.html