Coroutines adalah cara Kotlin menulis kode asynchronous yang terlihat seperti kode synchronous. Section ini membongkar konsep, builder, dispatcher, dan Flow.

# Asynchronous Programming

Pahami perbedaan synchronous dan asynchronous, mengapa async penting untuk respons UI dan throughput IO, serta pendekatan callbacks, futures, async/await, dan coroutines.

Buka →
# Concurrency vs Parallelism

Bedakan concurrency (menangani banyak hal sekaligus secara logis) dan parallelism (menjalankan banyak hal sekaligus secara fisik), serta bagaimana coroutines mendukung keduanya.

Buka →
# Coroutine Fundamentals

Pahami apa itu coroutine: komputasi yang dapat ditangguhkan, ringan, dan dijadwalkan secara kooperatif. Pelajari runBlocking, launch, dan await.

Buka →
# suspend Functions

Pelajari suspend function: deklarasi, aturan pemanggilan dari coroutine, dan transformasi CPS (Continuation Passing Style) di level bytecode.

Buka →
# Coroutine Builders

Pelajari tiga coroutine builder utama — runBlocking, launch, dan async — beserta kapan memakai masing-masing untuk hasil yang benar dan idiomatik.

Buka →
# Coroutine Scope

Pelajari CoroutineScope: wadah yang mengatur siklus hidup coroutine anak, builder coroutineScope, dan bagaimana scope otomatis membersihkan coroutine saat berakhir.

Buka →
# Structured Concurrency

Pahami structured concurrency: hubungan induk-anak antar coroutine, propagasi exception, dan pembatalan berantai yang menjaga kode tetap aman dan terkontrol.

Buka →
# Coroutine Context

Pelajari CoroutineContext sebagai kumpulan elemen — Job, Dispatcher, CoroutineName, CoroutineExceptionHandler — yang dapat disusun dengan operator +.

Buka →
# Dispatchers

Pelajari Dispatchers.Default, IO, Main, dan Unconfined, kapan memakai masing-masing, serta cara mengganti dispatcher dengan withContext.

Buka →
# Job dan Cancellation

Pelajari interface Job, metode cancel(), join(), cancelAndJoin(), dan mekanisme pembatalan kooperatif berbasis suspend function dan ensureActive.

Buka →
# Exception Handling in Coroutines

Pelajari try-catch di dalam coroutine, CoroutineExceptionHandler untuk handler global, dan SupervisorJob untuk mengisolasi kegagalan antar anak.

Buka →
# Coroutine Timeouts

Pelajari withTimeout yang melempar TimeoutCancellationException, withTimeoutOrNull yang mengembalikan null, dan pola pembatalan otomatis untuk operasi yang tidak boleh menggantung.

Buka →
# async dan await

Pelajari penggunaan async untuk komputasi paralel, pola awaitAll untuk koleksi, dan penanganan exception yang dilempar dari async coroutine.

Buka →
# Coroutine Channels

Pelajari Channel<T> untuk komunikasi antar-coroutine, hot stream, send dan receive, buffered channel, dan builder produce.

Buka →
# Shared Flows

Pengenalan SharedFlow: hot multicast stream di mana banyak collector berbagi emisi yang sama, dengan konfigurasi replay buffer dan buffer overflow.

Buka →
# StateFlow

Pelajari MutableStateFlow sebagai state holder: selalu punya nilai, semantik conflation (hanya nilai terbaru yang dikirim), dan perbandingan dengan SharedFlow.

Buka →
# SharedFlow

Pelajari MutableSharedFlow sebagai event bus: tryEmit non-suspend vs emit suspend, konfigurasi replay, extraBufferCapacity, dan onBufferOverflow.

Buka →
# Flow Fundamentals

Pelajari Flow<T> sebagai cold asynchronous stream: builder flow { emit(...) }, semantik lazy (mulai saat di-collect), dan eksekusi per collector.

Buka →
# Flow Operators

Pelajari operator Flow: map, filter, transform, take, drop, combine, zip, flatMapConcat, flatMapMerge, flatMapLatest, debounce, dan distinctUntilChanged.

Buka →
# Flow Context dan Cancellation

Pelajari flowOn untuk pindah dispatcher, context preservation (collect tetap di pemanggil), dan perilaku Flow saat scope dibatalkan.

Buka →
# Cold vs Hot Flows

Pelajari perbedaan Flow (cold) dengan SharedFlow dan StateFlow (hot), kapan memakai masing-masing, dan implikasi desain dari pilihan tersebut.

Buka →
# Flow Testing

Pelajari cara menguji Flow tanpa dependensi tambahan: toList() untuk menangkap emit, runBlocking untuk suspend, dan pola assertion pada List yang dihasilkan.

Buka →
# Callback to Coroutine

Pelajari suspendCoroutine dan suspendCancellableCoroutine untuk membungkus API berbasis callback menjadi suspend function, lengkap dengan penanganan pembatalan.

Buka →
# Coroutine Testing

Pelajari cara menguji coroutine dengan runBlocking, withTimeout, dan assertion standar. Verifikasi exception, pembatalan, dan structured concurrency tanpa dependensi tambahan.

Buka →
# Coroutine Best Practices

Pelajari aturan praktis menulis coroutine: structured concurrency, withContext untuk ganti dispatcher, Flow untuk stream, kode cancellation-aware, dan konkurensi aman.

Buka →