面试题答案
一键面试CoroutineScope
CoroutineScope
定义了一个协程的作用域,它决定了协程的生命周期。通过实现 CoroutineScope
接口或使用 CoroutineScope
类型的对象,可以创建和管理一组相关的协程。当 CoroutineScope
被取消时,所有在该作用域内启动的协程也会被取消。
launch
launch
是 CoroutineScope
的扩展函数,用于在指定的 CoroutineScope
中启动一个新的协程。它返回一个 Job
对象,通过这个 Job
对象可以控制协程的生命周期(如取消协程)。launch
启动的协程是异步执行的,不会阻塞当前线程。
suspend
suspend
关键字用于标记一个挂起函数。挂起函数是一种特殊的函数,它可以暂停执行,释放当前线程,直到某个条件满足(如异步操作完成)后再恢复执行。只有在协程内部或其他挂起函数中才能调用挂起函数。
示例代码
import kotlinx.coroutines.*
fun main() = runBlocking {
val scope = CoroutineScope(Job())
scope.launch {
performSuspendOperation()
}
}
suspend fun performSuspendOperation() {
delay(1000) // delay 是一个挂起函数
println("Suspend operation completed")
}