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

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

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

好,下面改用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】,但协程如何等待呢?咱们下次再揭晓。

最新文章

  1. ASP.NET vNext on CentOS 7
  2. Eclipse InstaSearch搜索词法 (很多并不支持)
  3. 前端代码目录结构、常用 piugin、元素补充用法及其它注意事项
  4. libtool: line 990: g++: command not found的解决
  5. EF简单的添加修改删除基本语法
  6. SpringAOP之静态代理
  7. javascript中的自增与自减
  8. pwnable.kr-fd
  9. 11.python之线程,协程,进程,
  10. 天津Uber优步司机奖励政策(1月25日~1月31日)
  11. 深入理解Solaris内核中互斥锁(mutex)与条件变量(condvar)之协同工作原理
  12. spring计划任务
  13. scss 编译方法
  14. Windows密钥容器和证书的关系
  15. Linux:FHS标准
  16. django之创建第3个项目:编写第一个模板文件
  17. elixir 模式匹配
  18. 【bzoj2594】 Wc2006—水管局长数据加强版
  19. Hive分区和桶的概念
  20. TypeScript 乱糟笔记

热门文章

  1. js小数计算的问题,为什么0.1+0.2 != 0.3
  2. [ARM-LInux开发]linux设备驱动makefile入门解析
  3. C#中各种Lock的速度比较
  4. PHP防止被重复请求接口的方法(网页端签名验证的方法)
  5. 18 SpringMVC 文件上传和异常处理
  6. golang执行命令行(一)
  7. Service must be explitict android 5.0问题
  8. SQL Join连接大小表在前在后的重要性(小表在前提高执行效率)
  9. FMX 隐藏任务栏 xe10
  10. 【题解】Luogu P5283 [十二省联考2019]异或粽子