Sobes.tech
Junior — Middle

Korutinler bağlamında Job ve Deferred fonksiyonları arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kotlin'de, Job ve Deferred iki farklı görev türüdür ve asenkron işlemleri temsil ederler, ancak farklı özelliklere sahiptirler:

  • Job — geri dönüş değeri olmayan bir görevi temsil eden temel bir türdür. Coroutine'in yaşam döngüsünü kontrol etmeye olanak tanır: başlatmak, iptal etmek, durumunu izlemek.

  • Deferred<T>Job'un bir alt sınıfıdır ve ek olarak T türünde bir sonuç döndürür. Asenkron bir işlemin sonucunu almak istendiğinde kullanılır. Sonucu almak için await() fonksiyonu çağrılır, bu da sonucu hazır olana kadar yürütmeyi duraklatır.

Örnek:

val job: Job = launch {
    // sonuç olmadan bir iş yap
}

val deferred: Deferred<Int> = async {
    // iş yapar ve sonuç döner
    42
}

runBlocking {
    deferred.await() // sonucu alır
}

Bu nedenle, temel fark Job'un sonuç döndürmemesi, Deferred'in ise sonuç döndürmesi ve await() ile alınabilmesidir.