首先我们先看一下错误的案例
/*** 按照顺序执行携程*/@Testfun `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}
2s多
那我们肯定是想在1s左右处理完。这明显有些耗时间。。如何优化呢
改为并发执行
/*** 按照顺序执行携程*/@Testfun `test sync`() = runBlocking {//统计函数执行时间val userTime = measureTimeMillis {val one = async { doOne() }val two = async { doTwo() }println("相加之和为:${one.await() + two.await()}")}println(" userTime ${userTime}")}
如何改为并发执行呢?
但是千万不要使用这种写法
//错误示范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