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


    在上一次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次的啦,如下:

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

  • 相关阅读:
    【CF 359B】Permutation
    如何更新 DevC++ 的编译器
    【LG 2801】教主的魔法
    矩阵浅谈
    NOI 系列赛常见技术问题整理
    Treap 浅谈
    DP 优化浅谈
    友链
    【CF 708C】Centroids
    我跳过的坑
  • 原文地址:https://www.cnblogs.com/webor2006/p/11732935.html
Copyright © 2020-2023  润新知