kotlin: 优化多个suspend函数的执行时间
一,代码:
//处理按钮点击事件
binding.button1.setOnClickListener {
runBlocking {
suspend fun getResult1(): String {
delay(1000L) // 模拟耗时操作
return "Result1"
}
suspend fun getResult2(): String {
delay(1000L) // 模拟耗时操作
return "Result2"
}
suspend fun getResult3(): String {
delay(1000L) // 模拟耗时操作
return "Result3"
}
val results = mutableListOf<String>()
val time = measureTimeMillis {
results.add(getResult1())
results.add(getResult2())
results.add(getResult3())
}
println("执行时间: $time")
println(results)
}
}
//处理按钮点击事件
binding.button2.setOnClickListener {
runBlocking {
suspend fun getResult1(): String {
delay(1000L) // 模拟耗时操作
return "Result1"
}
suspend fun getResult2(): String {
delay(1000L) // 模拟耗时操作
return "Result2"
}
suspend fun getResult3(): String {
delay(1000L) // 模拟耗时操作
return "Result3"
}
val results: List<String>
val time = measureTimeMillis {
val result1 = async { getResult1() }
val result2 = async { getResult2() }
val result3 = async { getResult3() }
results = listOf(result1.await(), result2.await(), result3.await())
}
println("执行时间: $time")
println(results)
}
}
async 最常见的使用场景是:与挂起函数结合,优化并发。
在实际工作中,如果你仔细去分析嵌套的异步代码,你会发现,
很多异步任务之间都是没有互相依赖的,
这样的代码结合挂起函数后,再通过 async 并发来执行,是可以大大提升代码运行效率的。
二,运行结果:
第一个按钮点击后:
第二个按钮点击后: