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 并发来执行,是可以大大提升代码运行效率的。

二,运行结果:

第一个按钮点击后:

第二个按钮点击后:

 

posted @ 2025-07-26 11:38  刘宏缔的架构森林  阅读(12)  评论(0)    收藏  举报