Middle
Kotlin proqramlaşdırma dili məlumat axınları ilə işləmək üçün hansı xüsusiyyətləri təqdim edir?
sobes.tech Süni İntellekt
AI-dan cavab
Kotlin, asinxron və bloklamayan iş üçün daxili korutinaları (coroutines) dəstəkləyir və bu, əməliyyat sisteminin iplərinə nisbətən daha yüngül alternativ təqdim edir.
Korutinalar vasitəsilə məlumat axınları ilə işləmək xüsusiyyətləri:
- Yüngüllük: Korutinalar, əməliyyat sisteminin iplərinə 1:1 bağlı deyil. Bir korutina əhəmiyyətli dərəcədə az resurs sərf edir.
- Strukturlaşdırılmış konkurrentlik: Korutinaların yaradılması üçün hierarxik struktur (valideyn-uşaq) tapşırıqların ləğv edilməsini və səhvlərin idarə olunmasını sadələşdirir.
- Dayandırma (Dayandırma funksiyaları):
suspendaçar sözü, funksiyanın icrasını dayandırmağa və sonra davam etdirməyə imkan verir. - Kanal (Channels): Məlumatların ötürülməsi vasitəsilə korutinalar arasında təhlükəsiz əlaqə təmin edir.
// Kanal istifadəsi nümunəsi import kotlinx.coroutines.* import kotlinx.coroutines.channels.* fun main() = runBlocking { val channel = Channel<Int>() launch { // Göndərən korutina for (x in 1..5) channel.send(x * x) channel.close() // Kanalı bağla } // Qəbul edən korutina for (y in channel) { println(y) } println("Hazır!") } - Flow (Məlumat axınları): Soyuq, asinxron məlumat axınlarını təmsil edir və çoxsaylı dəyərlər yaymağa qadirdir. RxJava Observable-ə bənzəyir, lakin korutinalarla daha yaxşı inteqrasiya olunur.
// Flow istifadəsi nümunəsi import kotlinx.coroutines.* import kotlinx.coroutines.flow.* fun main() = runBlocking { flow { // Flow yaradılması for (i in 1..3) { delay(100) // Asinxron işin simulyasiyası emit(i) // Dəyər yayımı } }.collect { value -> // Dəyərlərin toplanması println(value) } } - Dispatcherlər (Dispetçerlər): Korutinaların icra olunacağı ip hovuzlarını müəyyən edir.
Dispatchers.Default: Çox ağır hesablamalar üçün.Dispatchers.IO: Giriş-çıxış əməliyyatları üçün.Dispatchers.Main: UI yeniləmələri üçün (UI hadisə döngüsü olan platformalarda mövcuddur).Dispatchers.Unconfined: Müəyyən bir ip ilə məhdudlaşmır.
- Seçicilər (Select): Bir neçə asinxron əməliyyatın tamamlanmasını gözləməyə və ilk tamamlandığında əməliyyat həyata keçirməyə imkan verir.
Təbii ki, Kotlin-də ənənəvi Java ipleri (java.lang.Thread) ilə işləmək də mümkündür, lakin korutinalar çox hallarda asinxron və konkurrent məlumatların işlənməsi üçün üstün yanaşmadır.