Kotlin
코루틴 기초 — launch & async
Kotlin 코루틴의 핵심 빌더. launch 는 fire-and-forget, async 는 결과를 반환합니다.
import kotlinx.coroutines.*
fun main() = runBlocking {
// launch — 결과 없이 백그라운드 실행
val job = launch {
delay(100)
println("launch 완료")
}
// async — 결과를 Deferred로 반환
val deferred1 = async { fetchUser(1) }
val deferred2 = async { fetchUser(2) }
// await() — 결과 대기
val user1 = deferred1.await()
val user2 = deferred2.await()
println("$user1, $user2")
// awaitAll — 여러 Deferred 동시 대기
val results = awaitAll(
async { fetchUser(3) },
async { fetchUser(4) },
)
println(results)
job.join() // launch 완료 대기
println("모두 완료")
}
suspend fun fetchUser(id: Int): String {
delay(50) // 네트워크 시뮬레이션 (스레드 차단 없음)
return "User#$id"
}