Basic
Una corutina és un bloc de codi que es pot executar de manera independent en qualsevol moment.
Introducció
Una corutina és un bloc de codi que es pot executar de manera independent en qualsevol moment.
Una corutina s’executa dins d’un Thread, es pot executar per qualsevol thread, i inclús executar-se en threads diferents en diferents instants d’execució.
Entorn de treball
Crea un projecte “JVM console application” amb Amper
Encara que la paraula clau suspend forma part del llenguatge necessites instal·lar biblioteques per poder utilitzar les corutines.
Modifica el fitxer module.yaml afegint una dependència amb kotlinx-coroutines-core:
dependencies:
- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2Corutina
A continuació tens un codi que crea dos corutines amb launch i runBlocking:

Cada corutina s’executa al moment de crear-se, però pot suspendre la seva execució si executa una funció suspend que decideix esperar algun esdeveniment i no continuar la seva execució.
Si una corutina suspen la seva execució, es posa en una cua d’execució del thread a l’espera de continuar sent executada, i el thread continua executant altres corutines.
Si executes el codi, pots veure que World! apareix abans que Hello, perquè delay és una funció suspend que atura la seva execució fins que no ha passat el temps que li passes com argument.
Amb les funcions suspend pots escriure codi de manera lineal, però el codi no s’executa de manera lineal sinó concurrent.
Les coroutines són lleugeres
Les corutines necessiten molts menys recursos que els threads.
Per exemple, el següent codi llança 50.000 coroutines diferents consumint molt poca memòria, on cada corutina espera 5 segons i després imprimeix un període (‘.’):
import kotlinx.coroutines.*
fun main() = runBlocking {
repeat(50_000) { // launch a lot of coroutines
launch {
delay(5_000)
print(".")
}
}
}Estàs llegint una vista prèvia.
Inicia sessió per llegir l'article complet. Qualsevol compte obre 4 articles gratuïts al mes; l'alumnat i el professorat llegeixen les pàgines del seu curs sense límit.
Inicia sessió