Kotlin协程的启动方式是什么(kotlin,开发技术)

时间:2024-05-02 13:18:28 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    Kotlin%E5%8D%8F%E7%A8%8B%E7%9A%84%E5%90%AF%E5%8A%A8%E6%96%B9%E5%BC%8F%E6%98%AF%E4%BB%80%E4%B9%88

代码示例:

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协程的启动方式是什么的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:golang服务报错write: broken pipe如何解决下一篇:

15 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18