Kotlin协程的启动方式是什么
导读:本文共3035字符,通常情况下阅读需要10分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:这篇“Kotlin协程的启动方式是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Kotlin协程的启动方式是什么”文章吧。1.GlobalScope.launch代码示例:funtestGlobalScope(){GlobalScope.launch{println(&quo... ...
目录
(为您整理了一些要点),点击可以直达。代码示例:
launch函数是CoroutineScope的扩展函数,它有三个参数:
context: CoroutineContext = EmptyCoroutineContext, 第一个参数是协程上下文,它的默认值是 EmptyCoroutineContext,如果不传这个参数,默认就会使用 EmptyCoroutineContext。也可以传入 Kotlin 官方为我们提供的 Dispatchers,来指定协程运行的线程池。(Dispatchers.IO、Dispatchers.Unconfined、Dispatchers.Main)
start: CoroutineStart = CoroutineStart.DEFAULT,第二个参数是协程的启动模式,默认值是CoroutineStart.DEFAULT,CoroutineStart 是一个枚举类,一共有:DEFAULT、LAZY、ATOMIC、UNDISPATCHED。
block: suspend CoroutineScope.() -> Unit,第三个参数是函数类型block,它的类型是suspend CoroutineScope.() -> Unit。本质是一个挂起函数。
函数的返回值是一个 Job,它其实代表的是协程的句柄,并不能返回协程的执行结果。
代码示例
runBlocking是普通函数,第一个参数:context: CoroutineContext,协程上下文。第二个参数是函数类型,block: suspend CoroutineScope.() -> T,函数类型是有返回值类型 T 的,与 runBlocking 的返回值类型是一样的,runBlocking 其实是可以从协程当中返回执行结果的。
runBlocking特点:
runBlocking 启动的协程会阻塞当前线程的执行。
使用 async{} 创建协程,可以通过它返回的Deferred拿到协程的执行结果。
代码示例
async注意点
async 启动协程以后,不会阻塞当前程序的执行流程。
async{}的返回值,是一个 Deferred 对象,它的 await() 方法,就可以拿到协程的执行结果。
await只是等待执行完,并不是触发执行。
Kotlin协程的启动方式是什么的详细内容,希望对您有所帮助,信息来源于网络。