总结一点
同一协程作用域内,只有子协程执行完毕后父协程才会执行完毕
对于join的一些理解写在注释里面了
@Test
fun `myEat`()= runBlocking {
GlobalScope.launch {
launch {
delay(2000)
println("inner launch")
}
launch {
delay(300)
println("inner launch2")
}
//对于同一作用域内所有的协程 执行完毕 父 协程才会执行完毕
}
//不调用join 只会输出下面的 "abc" 因为runBlocking和GlobalScope是一个级别的
// "因为runBlocking和GlobalScope是一个级别的" 如何理解呢?可以这样理解
//打个比方 洛阳的市长相当于 runBlocking GlobalScope.launch 相当于许昌的市长
// 许昌的市长来到了洛阳市 这个时间 洛阳市下了文件 许昌的市长 肯定 不用理会,然如果 许昌的市长 在洛阳市机关里有其它
//代理职位的话(相当于join)那么 洛阳市的一些操作 肯定会作用给许昌的市长的 (join后就可以认为 GlobalScope.launch{}
// 是 runBlocking 的子协程 (我这是这样理解的也不知道理解的对不对)
// )
print("abc")
//对于runBlocking 作用域 那么 GlobalScope.launch 不算是 其子协程 只有调用join 加入才算
}
网友评论