1)Почему, если я пишу этот код, то в runBlocking у меня иногда меняется значение переменной, иногда оно 20 000, а иногда чуть меньше, но стоит мне удалить весь CoroutineScope и оставить только runBlocking, то у меня значение переменной всегда равно 10 000.
2)И почему вообще в первом случае, когда есть и coroutineScope и runBlockin у меня переменная в обоих случаях стремится к 20 000, а не к 10 000? Такое ощущение, что повторы пытаются сложиться, но в runBlockin они складываются криво.
Код:
val int = AtomicInteger()
CoroutineScope(Dispatchers.IO).launch {
repeat(100) {
launch {
repeat(100) {
int.incrementAndGet()
}
}
}
Log.e("@@@ CoroutineScope @@@", int.toString())
}
runBlocking {
withContext(Dispatchers.IO) {
repeat(100) {
launch {
repeat(100) {
int.incrementAndGet()
}
}
}
}
Log.e("@@@ withContext @@@", int.toString())
}
Скрины: