kotlin: yield()的用途例子:保证 job 任务能够得到执行
一,例子:
代码:
//处理按钮点击事件
binding.button1.setOnClickListener {
runBlocking {
val job = launch {
try {
println("try start")
delay(1000)
println("try end")
} finally {
println("finally start")
delay(1000)
println("finally end")
}
}
yield()
job.cancelAndJoin()
}
}
运行结果:
二,对比取消yield的结果:
代码:注释掉了yield(),此时job得不到执行,所以运行结果为空,什么都没有打印出来
//处理按钮点击事件
binding.button2.setOnClickListener {
runBlocking {
val job = launch {
try {
println("try start")
delay(1000)
println("try end")
} finally {
println("finally start")
delay(1000)
println("finally end")
}
}
//yield()
job.cancelAndJoin()
}
}