Kotlin: Saltando Corutinas

Estoy jugando con Kotlin y Coroutines en mi aplicación demo de Android.

Esto es lo que tengo:

fun testCoroutine3() = runBlocking { var num = 0 val jobs = List(10_000) { // create a lot of coroutines and list their jobs. launch(CommonPool) { delay(1000L) println(num++) } } for(job in jobs) { job.join() //wait for all jobs to finish } println("FINAL RESULT $num") } 

Básicamente estoy creando una list de 10.000 Corutinas que esperan 1 segundo e imprimen un número y luego lo incrementan.

Luego, cuando terminen todos los trabajos, imprimo el resultado final.

(Esta demostración está tomada de la documentation de GitHub )

Ahora la mayor parte de mi testing funciona bien, todas las corrutinas se ejecutan casi simultáneamente, y mi resultado final es 10000

Registro que muestra el resultado final = 10,000

Sin embargo, en raras ocasiones, obtengo el resultado final de 9.999

Registro que muestra el resultado final = 9.999

Esto se vuelve más obvio cuando aumento el número a 50,000 por ejemplo:

Registro que muestra el resultado final = 49.998

¿Es posible que Kotlin se salte algunas corutinas cuando hay muchas? en los 50,000, parece que se saltó 2

¿O algo más está sucediendo aquí?