【发布时间】:2020-12-10 11:41:59
【问题描述】:
考虑一下这个不可取消的协程,顾名思义。
fun main(args: Array<String>) = runBlocking {
val nonCancellableJob = launch(Dispatchers.Default) {
for (i in 1..1000) {
if (i % 100 == 0) {
println("Non cancellable iteration $i")
}
}
}
println("Cancelling non cancellable job...")
nonCancellableJob.cancelAndJoin()
}
现在,如果我摆脱显式调度程序Dispatchers.Default 并使用继承的调度程序,即launch {...},协程将立即取消而不打印任何内容。似乎取消了一个非取消协程!是bug还是什么?
【问题讨论】: