// 调用挂起方法的线程(如delay一般是由kotlinx.coroutines.DefaultExecutor中的线程调用) //Unconfined在挂起后在delay的调用线程DefaultExecutor执行 launch(context = Dispatchers.Unconfined) {// not confined -- will work with main thread println("Unconfined : I'm working in thread ${Thread.currentThread(...
构造CoroutineScope使用到的CoroutineContext是一个特殊的集合,这个集合它既有Map的特点,也有Set的特点,集合的每一个元素都是Element,每个Element都有一个Key与之对应,对于相同Key的Element是不可以重复存在的,Element之间可以通过+号组合起来,后面我会详细介绍CoroutineContext这个特殊集合的结构,接下来我先简单讲解一下组...
ContinuationInterceptor接口继承自CoroutineContext.Element接口 CoroutineContext.Element接口继承自CoroutineContext接口 所以,CoroutineDispatcher(简称 Dispatcher) 就是一个 CoroutineContext。 内置的线程池 kotlin publicactualobjectDispatchers {@JvmStaticpublicvalIO: CoroutineDispatcher = DefaultIoScheduler@JvmStaticpublicactu...
kotlin.coroutine 核心库的支持,让编写异步代码更加简单。 4 kotlin协程的演进 解释说明: Job: 任务,封装了协程中需要执行的代码逻辑。Job 可以取消并且有简单生命周期 Coroutine context:协程上下文,协程上下文里是各种元素的集合 Coroutine dispatchers :协程调度,可以指定协程运行在 Android 的哪个线程里 suspend:挂起函...
常见的 CoroutineDispatcher 还可以通过 ThreadPoolDispatcher 的 newSingleThreadContext()、newFixedThreadPoolContext()来创建,以及Executor 的扩展函数 asCoroutineDispatcher() 来创建。 在Android 中,还可以使用UI。它顾名思义,在 Android 主线程上调度执行。
CoroutineContext 是一个接口,如 Job、Deferred、Dispatcher、CoroutineName、CoroutineExceptionHandler、挂起函数都与 CoroutineContext 密切联系。 CoroutineScope 协程作用域,用于批量控制协程,本质是对 CoroutineContext 的一层简单封装。 Dispatchers 协程调度器
CommonPool 有点类似于 RxJava 的 Schedulers.computation(),主要是用于CPU密集型的计算任务。 CommonPool 使用 pool 来执行 block。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 override fun dispatch(context: CoroutineContext, block: Runnable) = try { (pool ?: getOrCreatePoolSync()).execute(ti...
现在我们再看回简化前的plus方法,它里面有个对ContinuationInterceptor的处理,目的是让ContinuationInterceptor在每次相加后都能变成CoroutineContext中的一个元素, ContinuationInterceptor它也是继承自Element,通常叫做协程上下文拦截器,它的主要作用是在协程执行前拦截它,从而在协程执行前做出一些其他的操作,前面我们讲到Coroutine...
常见的 CoroutineDispatcher 还可以通过 ThreadPoolDispatcher 的 newSingleThreadContext()、newFixedThreadPoolContext()来创建,以及Executor 的扩展函数 asCoroutineDispatcher() 来创建。 在Android 中,还可以使用UI。它顾名思义,在 Android 主线程上调度执行。
Dispatchers.Main是调度器的一个实现,不用担心,我们很快就会认识它了。 2. 协程拦截器 费了好大劲儿说完上下文,这里就要说一个比较特殊的存在了——拦截器。 publicinterfaceContinuationInterceptor:CoroutineContext.Element{companionobjectKey:CoroutineContext.Key<ContinuationInterceptor>publicfun<T>interceptContinuation(...