☀️Siang
Kotlin

🔄 Kotlin Coroutines: Async Programming

Tutorial lengkap Kotlin Coroutines — launch, async, suspend function, Flow, Channel, Dispatcher, CoroutineScope, error handling, dan quiz interaktif untuk async programming modern

Artikel: Kotlin Coroutines Artikel: Kotlin Coroutines


1. Pengenalan Coroutines

Coroutines adalah fitur Kotlin untuk menulis kode asynchronous (non-blocking) dengan cara yang terlihat seperti kode synchronous (sequential). Coroutine jauh lebih ringan dari thread — Anda bisa menjalankan ribuan coroutine tanpa masalah performa.

Masalah utama dengan callback dan thread tradisional:

  • Callback Hell — kode bertingkat yang sulit dibaca
  • Thread berat — setiap thread membutuhkan ~1MB stack memory
  • Kode sulit dipahami — async logic tersebar di berbagai callback

Coroutine menyelesaikan semua masalah ini dengan memungkinkan Anda menulis kode async seolah-olah kode sync.

Coroutine vs Thread

Aspek Coroutine Thread
Bobot🟢 Sangat ringan (~100 bytes)🔴 Berat (~1MB per thread)
JumlahBisa ribuan sekaligusRatusan saja sudah berat
Penulisan🟢 Seperti kode sync🟡 Callback / Handler
Memory🟢 Heap (sedikit)🔴 Stack (banyak)
Cancel🟢 Built-in cooperative🔴 Manual & kompleks
Error🟢 try-catch biasa🟡 UncaughtExceptionHandler
Diagram: Thread (1 atau lebih)

Thread (1 atau lebih)

Coroutine A

Coroutine B

Coroutine C



2. Suspend Function

Suspend function adalah fungsi yang bisa di-pause (suspend) dan di-resume tanpa memblokir thread. Suspend function hanya bisa dipanggil dari dalam coroutine atau suspend function lainnya.

Diagram

Android ViewModel class MyViewModel : ViewModel...

Android Activity / Fragment lifecycleScope.laun...



12. Quiz Pemahaman

Uji pemahaman Anda tentang Kotlin Coroutines dengan quiz singkat berikut!

1. Apa perbedaan utama launch dan async?

a) launch lebih cepat dari async
b) launch tidak mengembalikan nilai, async mengembalikan Deferred<T>
c) launch untuk synchronous, async untuk asynchronous
d) Keduanya identik

2. Kapan menggunakan Dispatchers.IO?

a) Untuk komputasi berat (CPU intensive)
b) Untuk operasi jaringan dan file I/O
c) Untuk update UI
d) Untuk operasi yang sangat cepat

3. Apa fungsi suspend keyword pada fungsi?

a) Membuat fungsi berjalan di background thread
b) Menandai bahwa fungsi bisa di-pause dan di-resume tanpa memblokir thread
c) Membuat fungsi menjadi asynchronous
d) Membuat fungsi berjalan lebih cepat

4. Apa perbedaan StateFlow dan SharedFlow?

a) StateFlow selalu memiliki nilai saat ini, SharedFlow tidak
b) Keduanya identik
c) StateFlow lebih cepat dari SharedFlow
d) SharedFlow deprecated, harus pakai StateFlow

5. Mengapa GlobalScope tidak direkomendasikan di Android?

a) Karena terlalu lambat
b) Karena coroutine hidup lebih lama dari lifecycle komponen, bisa menyebabkan memory leak
c) Karena hanya bisa digunakan di main thread
d) Karena sudah deprecated

🔍 Zoom
100%
🎨 Tema