Coroutine là cách viết code bất đồng bộ theo kiểu tuần tự, nhẹ hơn thread nhiều (hàng nghìn coroutine trên vài thread).
suspendfunction: có thể tạm dừng rồi tiếp tục mà không chặn thread — khi gặp điểm suspend, thread được trả lại để làm việc khác.- CoroutineScope: giới hạn vòng đời (ví dụ
viewModelScope,lifecycleScope) → tự hủy job khi màn hình biến mất, tránh rò rỉ (structured concurrency). - Dispatcher: chọn thread pool —
Dispatchers.Main(UI),Dispatchers.IO(mạng/đĩa),Dispatchers.Default(CPU). - Chạy song song bằng
async/await, gộp bằngcoroutineScope.
Hay hỏi: khác biệt coroutine vs thread, và vì sao withContext(Dispatchers.IO) cho việc I/O để không nghẽn UI.