Sobes.tech
Middle

Kotlin-də çox iş parçacığı ilə necə işləmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Kotlin-də çoxmərhəlilik bir neçə üsulla həyata keçirilə bilər, hər biri vəzifəyə görə öz üstünlüklərinə malikdir:

  1. Klassik JVM ipları (java.lang.Thread): Birbaşa Java API-dən istifadə edirik.

    // Yeni ip yaratmaq və başlatmaq
    Thread {
        // Ayrı bir ipdə icra olunan kod
        println("Ip-dən salam!")
    }.start()
    
  2. İcraçılar (java.util.concurrent paketi): İp havuzlarının daha çevik idarə olunması.

    // Sabit ölçülü ip havuzundan istifadə
    import java.util.concurrent.Executors
    
    val executor = Executors.newFixedThreadPool(4)
    
    executor.submit {
        // Havuzda icra olunan tapşırıq
        println("Havuzda tapşırıq icra olunur")
    }
    
    // Havuzu bağlamağı unutmayın
    // executor.shutdown()
    
  3. Korutinlər (Kotlin Coroutines): Framework tərəfindən idarə olunan yüngül iplar, asinxron və bloklamayan icra təmin edir. Müasir Android inkişafında üstünlük verilən yoldur.

    // kotlinx-coroutines-core və kotlinx-coroutines-android asılılıqlarını əlavə edin
    
    import kotlinx.coroutines.*
    
    // Qlobal sahədə korutina başlatmaq
    GlobalScope.launch {
        delay(1000L) // Bloklamayan gecikmə
        println("Korutindən salam!")
    }
    
    // Android üçün ViewModel-də nümunə
    /*
    import androidx.lifecycle.ViewModel
    import androidx.lifecycle.viewModelScope
    
    class MyViewModel : ViewModel() {
        fun doSomethingAsync() {
            viewModelScope.launch {
                // ViewModel sahəsində işləyən kod,
                // ViewModel təmizlənəndə avtomatik ləğv olunur
            }
        }
    }
    */
    

Yanaşmaların müqayisəsi:

Yanaşma İdarəetmə Yüngüllük Xəta idarəetməsi Ləğv İstifadə çətinliyi (tipik tapşırıqlar üçün)
java.lang.Thread Əl ilə (yaratma, başlatma, idarəetmə) Çəkiyəçik Əl ilə Əl ilə Orta
java.util.concurrent Executor API vasitəsilə Çəkiyəçik API vasitəsilə API vasitəsilə Orta
Korutinlər (Kotlin Coroutines) Framework (sahələr, kontekstlər, dispatcherlər) Yüngül Strukturlaşdırılmış Daxil edilmiş Aşağı (tipik tapşırıqlar üçün)

Korutinalar Android-də asinxron kodla işləmək üçün ən rahat və səmərəli üsul təklif edir, həyat dövrü və ləğv problemlərini minimuma endirir.