Pengantar Coroutine di Kotlin
Coroutine adalah rangkaian eksekusi ringan yang dapat ditangguhkan dan dilanjutkan nanti. Sudah banyak artikel atau topik yang membahas hal ini tetapi postingan ini berbeda, sederhana dan dapat membuat Anda memulai dengan lebih mudah. Ini akan mencakup bagian-bagian berikut:
Ringkasan
Seperti banyak bahasa pemrograman lain seperti JS, Python, Coroutine adalah fitur yang disediakan oleh Kotlin yang memungkinkan kita melakukan tugas yang panjang dan memakan waktu. Pendeknya:
Di Kotlin, Coroutine adalah cara untuk menulis kode asinkron dan tidak memblokir dengan cara yang lebih berurutan dan mudah dibaca.
Sebenarnya, tidak ada teknik baru di sini. Kita dapat memperlakukan Kotlin Coroutine sebagai framework/library yang merangkum beberapa penggunaan umum saat menangani asinkronisasi.
Contoh sederhana penggunaan coroutine di Kotlin
Untuk menggunakan coroutine di Kotlin, Anda harus menyertakan kotlinx-coroutines-corelibrary tersebut di project Anda. Di file gradle aplikasi Anda (hanya ada satu file gradle di bawah proyek IntelliJ, atau pilih file gradle untuk aplikasi jika itu adalah proyek Android), tambahkan baris berikut:
dependencies {
testImplementation(kotlin("test-junit"))
implementation(kotlin("stdlib-jdk8"))
// add coroutine dependency
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2")
}
1. Gunakan launchuntuk membuat coroutine
Berikut adalah contoh penggunaan coroutine untuk menjalankan tugas yang berjalan lama di latar belakang:
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()
}
}
2. Gunakan asyncuntuk membuat coroutine
Berikut adalah contoh penggunaan coroutine di Kotlin untuk melakukan beberapa tugas secara paralel, lalu menunggu semuanya selesai:
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()
}
}
Perbedaan antara launch dan async untuk memulai coroutine
Keduanya biasanya digunakan untuk memulai coroutine. Perbedaan utama antara keduanya adalah launchmengembalikan Pekerjaan (masa depan yang dapat dibatalkan tanpa pemblokiran) dan tidak mengembalikan hasil, sementara asyncmengembalikan Ditangguhkan (masa depan yang dapat dibatalkan tanpa pemblokiran dengan hasil) yang dapat digunakan untuk mendapatkan hasil dari coroutine. Mempertimbangkan perbedaannya, kapan harus menggunakan launch dan async untuk membuat coroutine:
- Saat Anda menggunakan
launchfungsi, coroutine akan berjalan di latar belakang dan pemanggilan fungsi akan segera kembali. Ini digunakan ketika hasil coroutine tidak diperlukan. - Saat Anda menggunakan
asyncfungsi, coroutine juga akan berjalan di latar belakang dan pemanggilan fungsi akan segera kembali, tetapi ini akan mengembalikan objekDeferredtempat Anda dapat memanggil fungsi .await() untuk mendapatkan hasil coroutine. Ini digunakan ketika hasil dari coroutine dibutuhkan. Misalnya:
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}
Apa lagi dari sini? Seperti yang kita ketahui Coroutine adalah topik besar dan hanya sedikit yang bisa menjelaskan semuanya. Ini adalah artcile pertama dari seri Coroutine. Jika Anda tertarik, silakan berlangganan untuk lebih banyak posting mendatang tentang ini:
- Non-pemblokiran di Kotlin Coroutines (Masuk minggu ini)
- Memulai dan Menangguhkan Coroutine di Kotlin (Masuk minggu ini)
Awalnya diterbitkan di https://needone.app pada 16 Januari 2023.

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































