栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Kotlin 协程(四) -协程上下文与调度器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kotlin 协程(四) -协程上下文与调度器

Kotlin 协程(一)

Kotlin 协程 (二)协程取消与超时

Kotlin 协程(三) async和await

所有的协程都是在上下文中运行,而协程上下文包含一个协程调度器.

协程调度器确定了相关的协程在哪个线程或哪些线程上执行,协程调度器可以将协程限制在一个特定的线程执行,或将它分派到一个线程池,亦或是让它不受限地运行.

协程调度器源码:

public actual object Dispatchers {
    
    @JvmStatic
    public actual val Default: CoroutineDispatcher = createDefaultDispatcher()


    
    @JvmStatic
    public actual val Main: MainCoroutineDispatcher get() = MainDispatcherLoader.dispatcher


    
    @JvmStatic
    public actual val Unconfined: CoroutineDispatcher = kotlinx.coroutines.Unconfined


    
    @JvmStatic
    public val IO: CoroutineDispatcher = DefaultScheduler.IO
}

从源码可以得知

Main 是运行在主线程的及在Android中进行UI绘制的线程.一般用于处理UI绘制及一些轻量级任务

Default 是运行在非主线程的,一般用于CPU密集型计算型任务.如数组排序,JSON解析,异常判断等

IO 是运行在非主线程的,一般用于磁盘操作和网络IO操作任务.如数据库操作,文件读写,网络请求等

Unconfined 未定义的线程,是一个特殊的调度器且似乎也运行在 main 线程中,但实际上它是一种不同的机制.协程调度器在调用它的线程启动了一个协程,但它仅仅只是运行到第一个挂起点.挂起后,它恢复线程中的协程,而这完全由被调用的挂起函数来决定.非受限的调度器非常适用于执行不消耗 CPU 时间的任务,以及不更新局限于特定线程的任何共享数据(如UI)的协程

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/749911.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号