Kotlin 协程(Coroutines) 是 Kotlin 提供的一种轻量级并发编程方案,用来简化异步、非阻塞和并发任务的编写。
下面用通俗易懂的方式给你讲清楚。
在传统的异步编程中,我们经常遇到:
例如:
getUser { user ->
getOrder(user) { order ->
showOrder(order)
}
}
而使用协程,可以写成像同步代码一样的异步代码:
val user = getUser()
val order = getOrder(user)
showOrder(order)
协程 ≠ 线程
✅ 一个线程可以跑成千上万个协程
✅ 协程可以在不阻塞线程的情况下“挂起”
suspend fun getUser(): User {
delay(1000) // 不阻塞线程
return User("Tom")
}
suspend 表示“可以暂停”GlobalScope.launch {
val user = getUser()
println(user)
}
常用作用域:
GlobalScope(不推荐长期使用)viewModelScope(Android)lifecycleScope(Android)CoroutineScope决定协程跑在哪里:
Dispatchers.Main // UI 线程(Android)
Dispatchers.IO // 网络 / 文件
Dispatchers.Default // CPU 密集计算
示例:
launch(Dispatchers.IO) {
val data = fetchData()
withContext(Dispatchers.Main) {
updateUI(data)
}
}
✅ 代码简洁(像同步写异步)
✅ 性能高(轻量)
✅ 易于取消和异常处理
✅ 避免回调地狱
val job = launch {
repeat(1000) {
delay(100)
}
}
job.cancel()
try {
launch { throw Exception() }
} catch (e: Exception) {
// 处理异常
}
async / await)Kotlin 协程是一种用“同步写法写异步逻辑”的轻量级并发工具。
如果你愿意,我也可以:
你想从哪方面深入?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。