Kotlin Coroutine là một cơ chế mạnh mẽ giúp lập trình viên xử lý bất đồng bộ và đa luồng một cách hiệu quả. Không giống như Thread truyền thống, Coroutine nhẹ hơn, linh hoạt hơn và giúp code dễ đọc hơn nhờ sử dụng cú pháp khai báo.
viewModelScope
, lifecycleScope
.Kotlin cung cấp nhiều cách để chạy một Coroutine. Một cách phổ biến là sử dụng launch
và async
:
import kotlinx.coroutines.*
fun main() = runBlocking {
launch {
delay(1000L)
println("Hello, Coroutine!")
}
println("Start")
}
Giải thích:
runBlocking
đảm bảo chương trình không kết thúc ngay lập tức.launch
tạo một coroutine chạy song song với main thread.delay(1000L)
giúp trì hoãn một giây mà không chặn thread chính.launch
và async
launch
: Trả về một Job
, không có giá trị trả về.async
: Trả về một Deferred<T>
, có thể sử dụng .await()
để lấy kết quả.Ví dụ với async
:
fun main() = runBlocking {
val result = async {
delay(1000L)
10
}
println("Result: ${result.await()}")
}
Kotlin cung cấp các scope giúp quản lý vòng đời của Coroutine:
Coroutine sử dụng Dispatchers
để quyết định chạy trên luồng nào:
Dispatchers.Main
: Chạy trên UI thread (chỉ dành cho Android).Dispatchers.IO
: Dành cho tác vụ đọc/ghi file, truy vấn mạng, database.Dispatchers.Default
: Dành cho tác vụ tính toán nặng.Dispatchers.Unconfined
: Không bị giới hạn bởi luồng cụ thể.Ví dụ:
fun main() = runBlocking {
launch(Dispatchers.IO) {
println("Running on ${Thread.currentThread().name}")
}
}
Coroutine cung cấp cách bắt ngoại lệ thông qua try-catch
hoặc CoroutineExceptionHandler
:
fun main() = runBlocking {
val handler = CoroutineExceptionHandler { _, exception ->
println("Caught exception: $exception")
}
val job = launch(handler) {
throw RuntimeException("Something went wrong")
}
job.join()
}
Kotlin Coroutine là một công cụ mạnh mẽ giúp lập trình viên xử lý các tác vụ bất đồng bộ hiệu quả hơn. Với khả năng quản lý luồng tối ưu, dễ đọc, dễ mở rộng, Coroutine trở thành một lựa chọn tuyệt vời cho các ứng dụng hiện đại, đặc biệt là trong Android.
You need to login in order to like this post: click here
YOU MIGHT ALSO LIKE