kotlin: 用async/await优化多个suspend函数的执行时间时要先启动多个协程
一,代码:
//处理按钮点击事件
binding.button1.setOnClickListener {
runBlocking {
suspend fun getResult1(): String {
delay(3000L) // 模拟耗时操作
return "Result1"
}
suspend fun getResult2(): String {
delay(2000L) // 模拟耗时操作
return "Result2"
}
suspend fun getResult3(): String {
delay(1000L) // 模拟耗时操作
return "Result3"
}
val results: List<String>
val time = measureTimeMillis {
println("begin async 1");
val result1 = async { getResult1() }
println("begin async 2");
val result2 = async { getResult2() }
println("begin async 3");
val result3 = async { getResult3() }
println("begin await 1");
val res1 = result1.await()
println("begin await 2");
val res2 = result2.await()
println("begin await 3");
val res3 = result3.await()
println("结束");
results = listOf(res1, res2, res3)
}
println("执行时间: $time")
println(results)
}
}
//处理按钮点击事件
binding.button2.setOnClickListener {
runBlocking {
suspend fun getResult1(): String {
delay(3000L) // 模拟耗时操作
return "Result1"
}
suspend fun getResult2(): String {
delay(2000L) // 模拟耗时操作
return "Result2"
}
suspend fun getResult3(): String {
delay(1000L) // 模拟耗时操作
return "Result3"
}
val results: List<String>
val time = measureTimeMillis {
println("begin async 1");
val result1 = async { getResult1() }
println("begin await 1");
val res1 = result1.await()
println("begin async 2");
val result2 = async { getResult2() }
println("begin await 2");
val res2 = result2.await()
println("begin async 3");
val result3 = async { getResult3() }
println("begin await 3");
val res3 = result3.await()
println("结束");
results = listOf(res1, res2, res3)
}
println("执行时间: $time")
println(results)
}
}
用async/await优化多个suspend函数的执行时间,
要先启动这些协程,(button1点击后的处理)
如果顺序async/await执行,(button2点击后的处理)
则起不到优化时间的作用
二,运行结果:
button1点击后:
button2点击后: