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:
-
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() -
İcraçılar (
java.util.concurrentpaketi): İ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() -
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.