Kotlin协程学习之-02

协程的基本使用

GlobalScope.launch

生命周期与进程一致,且无法取消

runBlocking

会阻塞线程,一般在测试阶段可以使用

val coroutineScope = CoroutineScope(context)

coroutineScope.launch

通过context参数去管理和控制协程的生命周期

用法

val coroutineScope = CoroutineScope(context)

coroutineScope.launch(Dispatchers.IO) {

通过Dispatchers.IO参数把任务切换到IO线程执行

}

coroutineScope.launch(Dispatchers.Main) {

通过Dispatchers.Main参数把任务切换到Main线程执行

}

使用withContext方法

该方法可以切换到指定线程,并在闭包内的逻辑执行结束后,自动把线程切换回去继续执行

corountineScope.launch(Dispatchers.Main) {

val image = withContext(Dispatchers.IO) {

getImage(imageId)

}

}

使用launch、async等方法创建的协程,在执行到某个suspend方法时会从正在执行它的线程上脱离,互相脱离后的线程和协程会分别执行不同的任务。

使用suspend标记的方法,只能执行在协程代码块中。

获取协程的返回值

协程是一种异步概念,需要一些特殊操作才能获取返回值。方法如下

async / await

主要流程是使用async开启协程,然后调用async返回的Defered对象的await方法获取协程运算的结果。

跟launch相比,async是带返回值的。

相关推荐
Qlittleboy6 分钟前
PHP的接口参数传递的过多,max_input_vars = 5000
开发语言·php
Aurorar0rua7 分钟前
CS50 x 2024 Notes Algorithms - 02
c语言·开发语言·学习方法
tyqtyq229 分钟前
HarmonyOS AI 应用开发实战:考研择校分析系统
人工智能·学习·考研·华为·生活·harmonyos
en.en..15 分钟前
冒泡排序与选择排序完整对比解析
开发语言·数据结构·算法·c#·排序算法
兰令水21 分钟前
hot100【acm版】【2026.7.18打卡-java版本】
java·开发语言·算法
cui_ruicheng30 分钟前
Python从入门到实战(十三):模块、包与环境管理
开发语言·python
光影62733 分钟前
MySQL基础入门
数据库·笔记·sql·学习·mysql·学习方法
海兰36 分钟前
【实用程序】网页公开信息智能采集系统详细设计指南
人工智能·学习·自动化·采集信息
MartinYeung538 分钟前
[论文学习]AgentDAM:自主Web Agent的隐私泄露评估
学习
就叫飞六吧44 分钟前
子页面和dialog案例
开发语言·javascript·ecmascript