0
点赞
收藏
分享

微信扫一扫

Android Kotlin Channel的关闭


@Test
fun `test close channel`() = runBlocking<Unit> {
val channel = Channel<Int>(3)
//生产者
val producer = GlobalScope.launch {
List(3) {
channel.send(it)
println("send ${it}")
}
channel.close()
println("""close1.
| - CloseForSend isClosedForSend ${channel.isClosedForSend}
| - CloseForReceiver ${channel.isClosedForReceive}""".trimMargin())

}

val consumer = GlobalScope.launch {
for(element in channel){
println("receive $element")
delay(1000)
}
println("""close2.
| - CloseForSend isClosedForSend ${channel.isClosedForSend}
| - CloseForReceiver ${channel.isClosedForReceive}""".trimMargin())
}


joinAll(producer, consumer)
}

Android Kotlin Channel的关闭_sed

关闭不会被立即执行

要等到结束后才能完全关闭

 

举报

相关推荐

0 条评论