• Kotlin协程作用域与构建器详解


    在上次我们是通过了这种方式来创建了一个协程:

    接着再来看另一种创建协程的方式:

    下面用它来实现上一次程序一样的效果,先来回顾一下上一次程序的代码:

    好,下面改用runBlocking的方式:

    运行一下:

    其它的代码不用多解释,重点是这块:

     

    好,对于咱们已经在用的协程相关的类下面来读一读它们官方的javadoc:

    首先先来看一下它,先看下GlobalScope:

    开读:

    看上面的代码好亲切,因为我是一个Android开发者~~不过目前还木有真实用Koltin编写过Android项目,还在Kotlin的语法学习中,待学习好了Kotlin之后到时得想办法用它来编写个Android项目才行。

    好,继续再来分析一下lauch方法:

    其中该方法用到了一个我们还木有学到的关键字:

    好下面正式来读一读它的javadoc:

    那下面来看一下CoroutineStart枚举类的说明:

    好,再回到launch()的javadoc接下来的继续:

    以上就是关于launch函数的javadoc的官方解读,下面再来看一下例子:

    我们知道在之前所有编写的示例中都是在这个main方法体中,接下来弄个不一样的写法,看:

     

    这也是之前理论所说:

    那这段代码此时它就会阻塞man线程,所以其效果就是main线程需要等runBlocking中的代码执行完了退出,如下:

    其效果跟之前的是一模一样的:

    在最后抛出一个问题?有木有一种机制能够精确的等待协程执行完了,再执行主线程呢?目前我们的做法不太精确,就是定了一个休眠时间比协程长,如下:

    答案肯定是有的,如果是要等某个线程执行完可以用join()【关于线程join()的使用可参考:https://www.cnblogs.com/webor2006/p/7895410.html】,但协程如何等待呢?咱们下次再揭晓。

  • 相关阅读:
    利用ssh传输文件
    linux 终端常用快捷键
    ubuntu 下关闭apache服务自动启动
    linux ps命令介绍
    virtualenv 使用
    startuml 2.6注册
    三代组装小基因组研究综述
    畅想未来的测序
    测序简史
    纳米孔测序技术介绍
  • 原文地址:https://www.cnblogs.com/webor2006/p/11725866.html
Copyright © 2020-2023  润新知