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 olarakTtüründe bir sonuç döndürür. Asenkron bir işlemin sonucunu almak istendiğinde kullanılır. Sonucu almak içinawait()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.