一,代码:
//处理按钮点击事件
binding.button2.setOnClickListener {
runBlocking {
val parentJob = launch(CoroutineName("myblock")) {
val job1 = launch {
println("协程job1: ${this}")
println("协程job1: ${coroutineContext[CoroutineName]?.name}")
delay(1000)
}
val job2 = this.launch {
println("协程job2: ${this}")
println("协程job2: ${coroutineContext[CoroutineName]?.name}")
delay(1000)
}
//.launch{}
val job3 = GlobalScope.launch {
println("协程job3: ${this}")
println("协程job3: ${coroutineContext[CoroutineName]?.name}")
delay(1000)
}
val scopeJob = Job()
val scope = CoroutineScope(scopeJob)
val job4 = scope.launch {
println("协程job4: ${this}")
println("协程job4: ${coroutineContext[CoroutineName]?.name}")
delay(1000)
}
val coroutineJob = Job()
println("coroutineJob: ${coroutineJob}")
val job5 = launch(coroutineJob) {
println("协程job5: ${this}")
println("协程job5: ${coroutineContext[CoroutineName]?.name}")
delay(1000)
println("coroutineJob: ${coroutineJob}")
}
println("children数量:"+coroutineJob.children.count())
coroutineJob.children.forEachIndexed { index, job ->
println("coroutineJob index:"+index)
println("coroutineJob job:"+job)
}
val job6 = launch(coroutineContext+ Dispatchers.IO) {
println("协程job6: ${this}")
println("协程job6: ${coroutineContext[CoroutineName]?.name}")
delay(1000)
}
}
delay(300)
//打印子协程
println("children数量:"+parentJob.children.count())
parentJob.children.forEachIndexed { index, job ->
println("children index:"+index)
println("children job:"+job)
}
}
}
二,运行结果:
![image]()