0
点赞
收藏
分享

微信扫一扫

Kotlin SelectClause0


@Test
fun `test SelectClause0`() = runBlocking<Unit> {
val job1 = GlobalScope.launch {
delay(100)
println("Job 1")
}

val job2 = GlobalScope.launch {
delay(10)
println("Job 2")
}
select<Unit> {
job1.onJoin { println("Job 1 on Job") }
job2.onJoin { println("Job 2 on Job") }
}

delay(1000)

}
}

执行顺序

Kotlin SelectClause0_android

点进去看 


onJoin 方法


Kotlin SelectClause0_kotlin_02

 

@Test
fun `test SelectClause2`() = runBlocking<Unit> {
val channels = listOf(Channel<Int>(), Channel<Int>())
println(channels)
launch(Dispatchers.IO) {
select<Unit> {
launch {
delay(10)
channels[1].onSend(200) { sendChannel ->
println("sent on $sendChannel")
}
}
launch {
delay(100)
channels[0].onSend(100) { sendChannel ->
println("sent on $sendChannel")
}
}
}
}

GlobalScope.launch {
println(channels[0].receive())
}
GlobalScope.launch {
println(channels[1].receive())
}
delay(100)
}
}

 

Kotlin SelectClause0_Test_03

 

举报

相关推荐

0 条评论