首先我们先看一下错误的案例

/**
* 按照顺序执行携程
*/
@Test
fun `test sync`() = runBlocking {
//统计函数执行时间
val userTime = measureTimeMillis {
val one = doOne()
val two = doTwo()
println("相加之和为:${one + two}")
}
println(" userTime ${userTime}")

}

private suspend fun doOne(): Int {
delay(1000)
return 14
}

private suspend fun doTwo(): Int {
delay(1000)
return 15
}

Android 协程 async 并发执行 结构化并发。_android

2s多

那我们肯定是想在1s左右处理完。这明显有些耗时间。。如何优化呢

改为并发执行

/**
* 按照顺序执行携程
*/
@Test
fun `test sync`() = runBlocking {
//统计函数执行时间
val userTime = measureTimeMillis {
val one = async { doOne() }
val two = async { doTwo() }
println("相加之和为:${one.await() + two.await()}")
}
println(" userTime ${userTime}")

}

Android 协程 async 并发执行 结构化并发。_执行时间_02

如何改为并发执行呢?

但是千万不要使用这种写法

//错误示范
val time3 = measureTimeMillis {
val one = async { doOne() }.await()
val two = async { doTwo() }.await()
Log.e(TAG, "the 3 result:${one + two}")
}
Log.e(TAG, "Completed 3 in $time3 ms")

否则还会是2s