当前位置: 首页 > news >正文

Kotlin:协程基础

第一个协程程序
import kotlinx.coroutines.*fun main(){GlobalScope.launch {delay(1000L)//delay 是一个特殊的 挂起函数 ,它不会造成线程阻塞,但是会 挂起 协程,并且只能在协程中使用。println("World!")}println("Hello - ")// 主线程中的代码会立即执行Thread.sleep(2000L) // 阻塞主线程 2 秒钟来保证 JVM 存活//    runBlocking {//但是这个表达式阻塞了主线程
//        delay(2000L)//我们延迟 2 秒来保证 JVM 的存活
//    }
}

本质上,协程是轻量级的线程。 它们在某些 CoroutineScope 上下文中与 launch 协程构建器 一起启动。 这里我们在 GlobalScope 中启动了一个新的协程,这意味着新协程的生命周期只受整个应用程序的生命周期限制。

可以将 GlobalScope.launch { …… } 替换为 thread { …… },并将 delay(……) 替换为 Thread.sleep(……) 达到同样目的。 试试看(不要忘记导入 kotlin.concurrent.thread)。
如果你首先将 GlobalScope.launch 替换为 thread,编译器会报以下错误:

Error: Kotlin: Suspend functions are only allowed to be called from a coroutine or another suspend function

这是因为 delay 是一个特殊的 挂起函数 ,它不会造成线程阻塞,但是会 挂起 协程,并且只能在协程中使用。

 

相关文章:

  • Leetcoder Day25| 回溯part05:子集+排列
  • 大概了解一下G1收集器
  • Redis 学习笔记 3:黑马点评
  • 服务器部署java 的docker项目,以及常用的一些命令
  • 可视化图文报表
  • Python爬虫进阶:爬取在线电视剧信息与高级检索
  • 【论文阅读】基于图像处理和卷积神经网络的板式换热器气泡识别与跟踪
  • iOS高级理论:分类和扩展
  • 多微服务合并为一个服务
  • 如何在debian上实现一键恢复操作系统?
  • 在IDEA中创建vue hello-world项目
  • Chapter 10 Basic Magnetics Theory
  • 微服务-实用篇
  • 机器视觉运动控制一体机在光伏汇流焊机器人系统的解决方案
  • Shell echo、printf、test命令
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • export和import的用法总结
  • HTTP中的ETag在移动客户端的应用
  • Java 内存分配及垃圾回收机制初探
  • JavaScript学习总结——原型
  • MySQL的数据类型
  • Redis 中的布隆过滤器
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • 彻底搞懂浏览器Event-loop
  • 浮动相关
  • 解析 Webpack中import、require、按需加载的执行过程
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 小程序开发之路(一)
  • 学习Vue.js的五个小例子
  • 一份游戏开发学习路线
  • Android开发者必备:推荐一款助力开发的开源APP
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • #define 用法
  • $.ajax()
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (二)fiber的基本认识
  • (蓝桥杯每日一题)love
  • (三)elasticsearch 源码之启动流程分析
  • (算法)前K大的和
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)母版页和相对路径
  • (转)我也是一只IT小小鸟
  • (轉貼) UML中文FAQ (OO) (UML)
  • .bat批处理(一):@echo off
  • .NET 5种线程安全集合
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .Net FrameWork总结
  • .Net 知识杂记
  • .net下简单快捷的数值高低位切换
  • .NET中 MVC 工厂模式浅析
  • //解决validator验证插件多个name相同只验证第一的问题