Pengantar Coroutine di Kotlin

Jan 17 2023
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.

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 objek Deferredtempat 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.