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是带返回值的。

相关推荐
天吾cc2 分钟前
RTT-ADC
单片机·嵌入式硬件·学习
kaixin_啊啊10 分钟前
test_机器学习算法学习
学习·算法·机器学习
m4Rk_25 分钟前
【论文阅读】Agent 记忆机制(34):MemoryBank——用遗忘曲线管理可强化的长期对话记忆
论文阅读·人工智能·学习·开源·github
210Brian1 小时前
STM32学习笔记(五)EXTI外部中断(上)
笔记·stm32·学习
估值探索者1 小时前
【Python实时盯盘与预警 #08】成交额突然放大2倍?Python窗口比较抓异动
java·开发语言·python
辣知1 小时前
辣知·化智19 人类文明的轮回
学习
yk 坤帝1 小时前
用Python实现发送《自动周报》实战脚本
开发语言·python
唐青枫2 小时前
Kotlin interface 详解:别再把接口写成空壳和万能开关
kotlin
xian_wwq2 小时前
【学习笔记】RAG 只是 Context Engineering 的一小块-5/16
笔记·学习·rag
abbgogo2 小时前
OSPF动态路由协议
开发语言·php