深入kotlin- 协程

Posted 颐和园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入kotlin- 协程相关的知识,希望对你有一定的参考价值。

协程是一个类似于线程的概念,但也不完全相同,它是一种轻量级的线程,它比线程的概念更小,功能更加强大,方便我们以顺序执行的方式进行异步编程。一个线程可以拥有若干个协程,协程可以进行执行、挂起、延迟等操作。通过协程,我们可以获得比线程更大的控制权,却只需付出更低的代价。

CoroutineScope

CoroutineScope 接口代表了协程的概念。GlobalScope 是其中一个实现。CoroutineScope 只有一个属性 coroutineContext,表示协程上下文。

协程上下文/协程分发器

CoroutineContext (协程上下文)是一个接口,用于描述协程的运行环境。它有两个重要属性: job 和 Dispather(分发器)。其中,job用于表示协程所要做的工作,分发器用于表示协程的执行线程。所有的协程构建器,如 luanch,async 都会接受一个可选的 CoroutineContext 参数。该参数用于指定协程上下文,注意,协程分发器间接继承(实现)了 CoroutineContext,因此有时候可以直接把 CoroutineDispatcher 传递给这个 CoroutineContext 参数。协程分发器用于指定协程的执行线程线程池。CoroutineDispatcher 抽象类有 4 种标准实现(当然也可以自己实现):

  • Dispathcers.Default 默认线程池(这个线程池中至少有两个线程,最多可以与 CPU 数相同),默认会从后台线程中分配一个线程
  • Dispatchers.IO

以上是关于深入kotlin- 协程的主要内容,如果未能解决你的问题,请参考以下文章

协程及Kotlin协程

深入kotlin- 协程

深入kotlin- 协程

深入理解Kotlin协程协程的上下文 CoroutineContext

深入kotlin - 协程

深入kotlin - 协程的取消