Sobes.tech
Junior — Middle

Koja je razlika između funkcija Job i Deferred u kontekstu korutina?

sobes.tech АИ

Одговор од АИ

U Kotlinu, Job i Deferred su dva tipa zadataka koja predstavljaju asinhrone operacije, ali s različitim mogućnostima:

  • Job — osnovni je tip koji predstavlja zadatak bez rezultata. Omogućava kontrolu životnog ciklusa korutine: pokretanje, otkazivanje, praćenje stanja.

  • Deferred<T> — podklasa je Job koja dodatno vraća rezultat tipa T. Koristi se kada je potrebno dobiti rezultat asinhrone operacije. Za dobijanje rezultata poziva se funkcija await(), koja zaustavlja izvršenje dok rezultat ne bude spreman.

Primer:

val job: Job = launch {
    // izvršava neki posao bez rezultata
}

val deferred: Deferred<Int> = async {
    // izvršava posao i vraća rezultat
    42
}

runBlocking {
    deferred.await() // dobija rezultat
}

Glavna razlika je što Job ne vraća rezultat, dok Deferred da i omogućava da se dobije putem await().