当前位置:嗨网首页>书籍在线阅读

25-通道的关闭与迭代

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

12.6.2 通道的关闭与迭代

与队列不同,通道可以关闭,表示不再处理更多进入通道的元素,同时在接收端,还可以使用for循环从通道接收元素。从概念上来讲,关闭操作就如同向通道发送的关闭令牌,当接收到这个关闭令牌时,迭代就停止操作,因此可以保证所有之前发送的元素都被接收到。

fun main(args: Array<String>) = runBlocking {
    val channel = Channel<Int>()
    launch {
        for (x in 1..5) channel.send(x * x)
        channel.close()   //通道关闭
    }
    for (y in channel) println(y)
    println("Done!")
}