Kotlin'de Coroutine'e Giriş
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ı .

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































