说明
本人也是刚接触协程,理解可能有误,请勿参考。
协程本质上就是将代码分成了一块一块的,按照块来执行
@Test
public fun
test1(){
runBlocking
{
launch
{
println("第一个执行单元开始执行.....")
delay(1000)
println("第一个执行单元执行完毕.....")
}
println("第二个执行单元开始执行.....")
println("第二个执行单元执行完毕.....")
launch
{
println("第三个执行单元开始执行.....")
delay(3000)
println("第三个执行单元执行完毕.....")
}
}
}
说明
当第一个块碰到delay而挂起的时候,线程并不会等在那里,而是会选择其他可以执行的块去执行,比如第2个块。第2个块执行完毕之后,去执行第3个块,又碰到delay,第3个块也会被挂起,线程仍然不会等在这里,也会去找其他可以执行的块,比如等了1000ms之后,第一个块已经恢复了,可以被执行了,此时线程就会去执行第一个块。第一个块执行完毕之后,线程可能会空闲2s,然后第三个块恢复了,此时线程会去执行第三个块。
转载请注明原文地址:https://tech.qufami.com/read-12677.html