kotlin:协程可以在不同的线程之间切换
一,代码:
//处理按钮点击事件
binding.button2.setOnClickListener {
runBlocking(Dispatchers.IO) {
repeat(3) { index ->
launch {
//println()
repeat(3) {
println("第"+index+"个协程:"+Thread.currentThread().name)
delay(100)
}
}
}
}
}
说明:实际运行时,可以看到:
协程虽然运行在线程之上,但协程并不会和某个线程绑定,
在某些情况下,协程是可以在不同的线程之间切换的
二,测试效果:
可以看到第0个协程运行在DefaultDispatcher-worker-3这个线程上,
第1个协程运行在: DefaultDispatcher-worker-2/DefaultDispatcher-worker-4/DefaultDispatcher-worker-7 这三个线程上
第2个协程运行在: DefaultDispatcher-worker-3/DefaultDispatcher-worker-4 这两个线程上