Kotlin'de Coroutine'e Giriş

Jan 17 2023
Bir Coroutine, daha sonra askıya alınabilen ve devam ettirilebilen hafif bir yürütme dizisidir. Bunu kapsayan birçok makale veya konu zaten var ama bu gönderi farklı, basit ve daha kolay başlamanızı sağlayabilir.

Bir Coroutine, daha sonra askıya alınabilen ve devam ettirilebilen hafif bir yürütme dizisidir. Bunu kapsayan birçok makale veya konu zaten var ama bu gönderi farklı, basit ve daha kolay başlamanızı sağlayabilir. Aşağıdaki bölümleri kapsayacaktır:

genel bakış

JS, Python gibi diğer birçok programlama dili gibi Coroutine de Kotlin tarafından sağlanan ve uzun ve zaman alan görevleri gerçekleştirmemizi sağlayan bir özelliktir. Kısacası:

Kotlin'de Eşyordamlar, eşzamansız, engellemeyen kodu daha sıralı, okunması kolay bir şekilde yazmanın bir yoludur.

Aslında, burada yeni teknikler yok. Kotlin Coroutine'i eşzamansızlaştırma ile uğraşırken bazı yaygın kullanımları kapsayan bir çerçeve/kütüphane olarak ele alabiliriz.

Kotlin'de eşyordam kullanmanın basit örnekleri

Kotlin'de eşyordam kullanmak için kütüphaneyi kotlinx-coroutines-coreprojenize dahil etmeniz gerekir. Uygulama gradle dosyanızda (IntelliJ projesi altında yalnızca bir gradle dosyası vardır veya Android projesi ise uygulama için gradle dosyasını seçin), aşağıdaki satırı ekleyin:

dependencies {
    testImplementation(kotlin("test-junit"))
    implementation(kotlin("stdlib-jdk8"))
    // add coroutine dependency
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2")
}

launch1. Eşyordamlar oluşturmak için kullanın

Arka planda uzun süre devam eden bir görevi gerçekleştirmek için eşyordam kullanmanın bir örneğini burada bulabilirsiniz:

import kotlinx.coroutines.*

fun main() {
    // Start a coroutine using the launch function
    val job = GlobalScope.launch {
        // Perform a long-running task in the background
        delay(1000L)
        println("Hello, world!")
    }

    // Wait for the coroutine to finish
    runBlocking {
        job.join()
    }
}

async2. Eşyordamlar oluşturmak için kullanın

Birden çok görevi paralel olarak gerçekleştirmek ve ardından hepsinin bitmesini beklemek için Kotlin'de eşyordamları kullanmanın bir örneğini burada bulabilirsiniz:

import kotlinx.coroutines.*

fun main() {
    // Start two coroutines using the async function
    val job1 = GlobalScope.async {
        // Perform a long-running task in the background
        delay(1000L)
        println("Task 1")
    }

    val job2 = GlobalScope.async {
        // Perform a different long-running task in the background
        delay(2000L)
        println("Task 2")
    }

    // Wait for both coroutines to finish
    runBlocking {
        job1.await()
        job2.await()
    }
}

Bir eşyordamı başlatmak için başlatma ve zaman uyumsuz arasındaki fark

Her ikisi de genellikle bir korotin başlatmak için kullanılır. İkisi arasındaki temel fark, launchbir İş (engellenmeyen iptal edilebilir bir gelecek) döndürmesi ve bir sonuç döndürmemesi, asyncbunun sonucunu elde etmek için kullanılabilecek bir Ertelenmiş (engellenmeyen, iptal edilebilir bir gelecek) döndürmesidir. eşyordam Fark göz önüne alındığında, eşyordamlar oluşturmak için launch ve async ne zaman kullanılmalıdır:

  • Fonksiyonu kullandığınızda launch, eşyordam arka planda çalışacak ve fonksiyon çağrısı hemen geri dönecektir. Korotinin sonucuna gerek olmadığında kullanılır.
  • Fonksiyonu kullandığınızda , eşyordam arka planda da çalışacak ve işlev çağrısı hemen geri dönecektir, ancak eşyordamın sonucunu almak için .await() işlevini çağırabileceğiniz asyncbir nesne döndürecektir . DeferredKorotinin sonucuna ihtiyaç duyulduğunda kullanılır. Örneğin:
  • val result = GlobalScope.async {
            return@async URL("https://api.example.com/data").readText()
        }
    val data = result.await()
    println(data)
    // output: {"fact":"A group of cats is called a \u201cclowder.\u201d","length":38}
    
    
    

Buradan daha ne var? Bildiğimiz gibi, Coroutine büyük bir konudur ve çok az aşınma hepsini açıklayabilir. Bu, Coroutine serisinin ilk makalesidir. Eğer ilgileniyorsanız, lütfen bununla ilgili daha fazla gönderi için abone olun:

  • Kotlin Coroutines'te bloke olmama (Bu hafta geliyor)
  • Kotlin'de Bir Coroutine Başlatın ve Askıya Alın (Bu hafta geliyor)

İlk olarak 16 Ocak 2023'te https://needone.app adresinde yayınlandı .