KOTLIN · 비동기
코루틴 기초 — launch & async
Kotlin 코루틴의 핵심 빌더. launch는 fire-and-forget, async는 결과를 반환합니다.
비동기중급coroutinelaunchasyncawaitdelay
핵심 설명
Kotlin 코루틴의 핵심 빌더. launch는 fire-and-forget, async는 결과를 반환합니다.
Kotlin code
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"
}학습 팁
async { } 두 개를 순서대로 await()하면 직렬 실행됩니다. 병렬 실행은 async 먼저 시작하고 나중에 await()하세요.
주의할 점
runBlocking은 현재 스레드를 차단합니다. 프로덕션에서는 최상위 진입점(main 함수)이나 테스트에서만 사용하세요. Android에서는 절대 사용하지 마세요.
자주 묻는 질문
코루틴 기초 — launch & async란 무엇인가요?
Kotlin 코루틴의 핵심 빌더. launch 는 fire-and-forget, async 는 결과를 반환합니다.
코루틴 기초 — launch & async 학습 시 주의할 점은 무엇인가요?
runBlocking 은 현재 스레드를 차단합니다. 프로덕션에서는 최상위 진입점(main 함수)이나 테스트에서만 사용하세요. Android에서는 절대 사용하지 마세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.