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

相关推荐
05664614 分钟前
RAG 向量检索:从“查字“到“查意“
数据库·人工智能·学习·oracle
就不掉头发27 分钟前
C++函数模板
java·开发语言·c++
却道天凉_好个秋37 分钟前
音视频学习(一百零二):全彩夜视
学习·音视频·全彩夜视
我是苏苏1 小时前
WPF开发01:基础控件及常用模板篇
开发语言·c#·html·wpf
wuyk5551 小时前
89.嵌入式内存管理的“稳定利器”:内存池原理与C语言实现
c语言·开发语言·stm32·单片机·嵌入式硬件
0566461 小时前
agent学习Day23——文件上传与 Embedding 语义检索
python·学习·embedding
小白说大模型1 小时前
【MYSQL】MYSQL学习的一大重点:索引(下)- B+树
b树·学习·mysql
却道天凉_好个秋1 小时前
音视频学习(一百零一):IR-Cut
学习·音视频·ir-cut
森诺Alyson1 小时前
前沿技术借鉴研讨-2026.8.6(影响中国育龄妇女生育偏好的因素/分孕周血压与不良妊娠结局的风险)
论文阅读·经验分享·学习·论文笔记
若无情我 纸小铭1 小时前
Nginx学习笔记(二) Nginx--connection&request
笔记·学习·nginx