package com.tiger.mykotlinapp.scope
import kotlinx.coroutines.CoroutineStart
import kotlinx.coroutines.async
import kotlinx.coroutines.delay
import kotlinx.coroutines.runBlocking
fun main():Unit = runBlocking {
val d = async(start = CoroutineStart.LAZY){
test()
}
println("hello")
println("hello")
println("hello")
println("hello")
println("hello")
println("hello")
println("hello")
println(d.await())//代表开启线程执行, 拿到返回值
}
suspend fun test():Int{
println("执行中")
delay(1000)
return 100
}
package com.tiger.mykotlinapp.scope
import kotlinx.coroutines.CoroutineStart
import kotlinx.coroutines.async
import kotlinx.coroutines.delay
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.selects.select
fun main():Unit = runBlocking {
val d = async(start = CoroutineStart.LAZY){
test1("1")
}
val c = async(start = CoroutineStart.LAZY){
delay(2000)
test1("2")
}
println(select<String> {
//阻塞主线程把协程等待结束再继续执行 谁先执行完毕,就退出返回先结束的那个返回值
c.onAwait.invoke {
it
}
d.onAwait.invoke {
it
}
})
println("end")
// println(d.await())//代表开启线程执行, 拿到返回值
}
suspend fun test1(a:String):String{
println("执行中$a")
delay(1000)
return a
}
package com.tiger.mykotlinapp.scope
import kotlinx.coroutines.CoroutineStart
import kotlinx.coroutines.async
import kotlinx.coroutines.delay
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.selects.select
fun main():Unit = runBlocking {
val d = async(start = CoroutineStart.LAZY){
test3("1")
}
val c = async(start = CoroutineStart.LAZY){
delay(2000)
test3("2")
}
println(select<String> {
//阻塞主线程把协程等待结束再继续执行 谁先执行完毕,就退出返回先结束的那个返回值
c.onAwait.invoke {
it
}
d.onAwait.invoke {
it
}
})
println("end")
// println(d.await())//代表开启线程执行, 拿到返回值
}
suspend fun test3(a:String):String{
println("执行中$a")
delay(1000)
return a
}
getCompleted
这个是立刻获取协程异步执行的值文章来源:https://www.toymoban.com/news/detail-804802.html
如果还没执行完毕就抛异常文章来源地址https://www.toymoban.com/news/detail-804802.html
到了这里,关于Kotlin Async的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!