PHpullh
학습 라이브러리/Kotlin/코루틴 기초 — launch & async

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에서는 절대 사용하지 마세요.