lezione 04

coroutines

launch, async e flow per task concorrenti.

livello: avanzato durata: 34 min output: task paralleli badge: kotlin essentials

coroutines

import kotlinx.coroutines.*
fun main() = runBlocking {
  launch { delay(100); println("ok") }
}

async/await

val job = async { 2 + 2 }
println(job.await())

flow

import kotlinx.coroutines.flow.*
val flow = flowOf(1, 2, 3)

result e runCatching

val res = runCatching { "ok" }
println(res.getOrNull())

esercizi

usa coroutine per eseguire task paralleli.

import kotlinx.coroutines.*
fun main() = runBlocking {
  val job = async { 2 + 2 }
  println(job.await())
}

panoramica

In questo capitolo su coroutines lavoriamo su coroutines, async/await, flow, result e runCatching per creare micro-pattern riutilizzabili.

lavora in sequenza: leggi, prova, modifica gli snippet e annota i trade-off principali.

badge: kotlin essentials

obiettivi

  • capire e applicare coroutines in uno scenario reale
  • capire e applicare async/await in uno scenario reale
  • capire e applicare flow in uno scenario reale
  • capire e applicare result e runcatching in uno scenario reale

scheda rapida

import kotlinx.coroutines.*
fun main() = runBlocking {
  launch { delay(100); println("ok") }
}

adatta questo scheletro agli esempi della lezione.

tips

  • usa val quando possibile
  • sfrutta data class
  • gestisci null in modo esplicito
  • coroutines con scope chiari
  • moduli gradle coerenti
  • gestisci timeout e cancellazioni

tip: documenta ogni scelta architetturale.

mini progetto

esegui due task con coroutines.

  • crea scope
  • lancia async
  • attendi risultati

output atteso: task completati.

checklist

  • ho eseguito gli snippet e controllato l'output
  • ho annotato almeno 2 trade-off
  • ho completato il mini progetto
  • ho salvato un riepilogo personale
start a brief