Kotlin에서 launch와 async는 무엇이 다를까?
2025. 2. 3. 21:14ㆍ프로그래밍 언어/Kotlin 기초
728x90
반응형
🌟 들어가기 전
오늘은 launch와 async의 차이점에 대해 학습했다.
두 개 모두 코루틴을 실행할 때 사용되지만, launch는 결과를 반환하지 않고 단순 실행하는 반면,
async는 값을 반환할 수 있다는 차이가 있다.
그동안 개발을 해오면서 두개의 차이를 정확하게 모르고 사용했다.
그냥 예제 긁어서 복붙…. ㅠㅠ
그래서 파헤쳐본 launch와 async는 무엇이 다를까?
🔍 세부 내용
1. launch vs async 차이점
- launch → 결과를 반환하지 않고, 단순히 새로운 코루틴을 실행
- async → 결과를 반환하는 Deferred 객체를 생성해서 await()로 값을 받을 수 있음
2. 예제 코드
import kotlinx.coroutines.*
fun main() = runBlocking {
val job = launch {
delay(1000)
println("launch: 완료!")
}
val result = async {
delay(1000)
"async: 완료!"
}
job.join() // launch는 join()으로 기다려야 함
println(result.await()) // async는 await()으로 값 반환
}
출력:
launch: 완료!
async: 완료!
3. 결론
- launch는 fire-and-forget 방식
- async는 await()을 호출해야 결과를 받을 수 있음
* fire-and-forget 방식이란,
결과를 신경 쓰지 않고 작업을 실행만 하는 방식
launch는 단순히 실행 후 종료되지만, async는 await()을 호출해야 값이 반환됨.
launch | async | |
반환값 | 없음 (Job 반환) | Deferred<T> 반환 (값을 반환하려면 await() 필요) |
사용 목적 | 단순 실행 (Fire-and-Forget) | 결과를 받아야 할 때 |
예제 | launch { ... } | async { ... }.await() |
🤔 배운 점 & 느낀 점
launch는 단순히 코루틴을 실행하고, async는 결과값을 반환하는 용도로 사용해야 한다는 점을 다시 확인했다.
async를 사용할 때 await()을 반드시 호출해야 값을 얻을 수 있다는 점이 중요했다.
앞으로 네트워크 요청 같은 비동기 작업에서 async를 적절히 활용할 계획!
728x90
반응형
'프로그래밍 언어 > Kotlin 기초' 카테고리의 다른 글
Kotlin inline 함수, 진짜 성능 최적화에 도움이 될까? (0) | 2025.02.07 |
---|---|
Kotlin 상태 관리 | Sealed Class vs Enum Class 차이점 (0) | 2025.02.06 |
[프로그래머스/Kotlin]Level3 - 양과 늑대 (0) | 2023.06.25 |
[Kotlin]Typealias VS Inline Class (0) | 2023.02.24 |
[Kotlin]Deligation (0) | 2023.02.24 |