Kotlin Coroutines-də əsas sinflər hansılardır?
sobes.tech Süni İntellekt
AI-dan cavab
Kotlin Coroutines-də əsas siniflər və anlayışlar:
-
CoroutineScope: İçində başladılan korutinlərin həyat dövrünü müəyyən edir. Bütün uşaq korutinlərini ləğv etməyə imkan verir. -
Job: Bir korutina üçün tutacaqdır. Onun vəziyyətini izləməyə, tamamlanmasını gözləməyə, ləğv etməyə imkan verir. -
Deferred:Job-un xüsusi növü olub, daha sonra mövcud olacaq dəyəri təmsil edir. Asinxron hesablamalar üçün istifadə olunur və nəticə.await()funksiyası ilə əldə edilir. -
Dispatcher: Korutinanın icra olunduğu ip və ya ip hovuzunu müəyyən edir. Əsas dispatcherlər:Dispatchers.Default: CPU intensiv tapşırıqlar üçün optimallaşdırılmışdır. Ümumi ip hovuzundan istifadə edir.Dispatchers.IO: Şəbəkə və disk I/O əməliyyatları üçün optimallaşdırılmışdır. Uyğun sayda ip istifadə edir.Dispatchers.Main: UI-nin əsas ipi. UI-ni yeniləmək üçün. Android və digər platformalarda mövcuddur.Dispatchers.Unconfined: Korutinanı mövcud ipdə başladır, lakin onu suspend edən funksiyanı hər hansı ipdə davam etdirir.
-
Suspending function:suspendaçar sözü ilə işarələnmiş və daha sonra dayandırılıb yenidən başlaya bilən funksiyadır. Digər suspending funksiyaları çağıra bilər. -
runBlocking: Mövcud ipi bloklayır və onun sahəsindəki bütün korutinlər tamamlanana qədər gözləyir. Əsasən testlər və main funksiyasında istifadə olunur. -
launch: Yeni korutina başladır, mövcud ipi bloklamır vəJobqaytarır. -
async: Yeni korutina başladır, mövcud ipi bloklamır vəDeferredqaytarır.
İstifadə nümunəsi:
// CoroutineScope, launch və Dispatchers.IO istifadə nümunəsi
import kotlinx.coroutines.*
fun main() = runBlocking {
// CoroutineScope yaradılması
val scope = CoroutineScope(Dispatchers.IO)
// IO dispatcher-də korutina başlatmaq
val job: Job = scope.launch {
// Şəbəkə sorğusu və ya digər I/O əməliyyatı
delay(1000) // İşin simulyasiyası
println("Korutina ${Thread.currentThread().name} daxilində tamamlandı")
}
// Korutinanın tamamlanmasını gözləmək
job.join()
println("Main funksiyası tamamlandı")
}
// async və Deferred istifadə nümunəsi
import kotlinx.coroutines.*
fun main() = runBlocking {
val deferredSum: Deferred<Int> = async {
delay(500)
1 + 1
}
// Nəticəni gözləmək
val result = deferredSum.await()
println("Nəticə: $result")
}