Kotlin 面试题
目录

Kotlin 中如何启动协程?

· 约 3 分钟读完 · 第 127 / 200 章

推荐答案

在 Kotlin 中,启动协程可以通过以下几种方式:

  1. 使用 launch 函数:

  2. 使用 async 函数:

  3. 使用 runBlocking 函数:

本题详细解读

launch 函数

  • launch 是一个构建器函数,用于启动一个新的协程,并且不会阻塞当前线程。
  • 它返回一个 Job 对象,可以通过该对象来控制协程的生命周期。
  • launch 通常用于执行不需要返回值的异步任务。

async 函数

  • async 也是一个构建器函数,用于启动一个新的协程,并且返回一个 Deferred 对象。
  • Deferred 是一个轻量级的非阻塞 future,它代表一个异步计算的结果。
  • 可以通过 await() 方法来获取 Deferred 的结果。
  • async 通常用于执行需要返回值的异步任务。

runBlocking 函数

  • runBlocking 是一个构建器函数,用于在常规的阻塞代码中启动一个协程。
  • 它会阻塞当前线程,直到协程执行完毕。
  • runBlocking 通常用于测试或主函数中,以确保协程的执行不会立即结束。

协程上下文

  • 在启动协程时,可以指定协程的上下文(CoroutineContext),例如 Dispatchers.Main、Dispatchers.IO 等,以控制协程的执行线程。

协程的作用域

  • 协程的作用域(CoroutineScope)决定了协程的生命周期。
  • 在 runBlocking 中启动的协程会继承 runBlocking 的作用域。
  • 在其他情况下,可以使用 GlobalScope 或自定义的作用域来启动协程。