У меня есть этот код, который меня смущает. почему, если я использую CoroutineScope (Dispatchers.IO) .launch в runBlocking и проверяю его с помощью println (). Каждый раз, когда я проверяю это, мой
println("01 Runblocking Scope Before join() => THis is ${Thread.currentThread().name} and ID is ${Thread.currentThread().id}")
будет отличаться от
println("02 Runblocking Scope Before join() => THis is ${Thread.currentThread().name} and ID is ${Thread.currentThread().id}")
Это мой код.
Но если я перейду с CoroutineScope (Dispatchers.IO) .launch {} на this.launch {}, оба println () в предыдущей строке будут одинаковыми. Я думаю, потому что ссылаются на ту же область (runBlocking {}), но почему, если я использую CoroutineScope (Dispatchers.IO) .launch {}, эти println () не печатают те же данные.
runBlocking {
println("Outside Scope => THis is ${Thread.currentThread().name} and ID is ${Thread.currentThread().id}")
CoroutineScope(Dispatchers.IO).launch {
//this.launch {
println("Runblocking Scope => THis is ${Thread.currentThread().name} and ID is ${Thread.currentThread().id}")
val jobs = mutableListOf<Job>()
for( i in IntRange(0, 10)) {
jobs.add(CoroutineScope(Dispatchers.IO).launch {
printData(i)
})
}
println("01 Runblocking Scope Before join() => THis is ${Thread.currentThread().name} and ID is ${Thread.currentThread().id}")
jobs.joinAll()
println("02 Runblocking Scope Before join() => THis is ${Thread.currentThread().name} and ID is ${Thread.currentThread().id}")
println("Exit Runblocking Scope")
}.join()
}