Kotlin suspend 키워드 완벽 정리 - 코루틴의 핵심 원리
✨ 개요
suspend는
Kotlin 코루틴의 핵심 키워드로, 일시 중단 가능한 함수를 정의할 때 사용합니다.
일반 함수는 즉시 실행되지만, suspend 함수
는 중단되었다가 다시 이어서 실행될 수 있어 효율적인 비동기 처리를 가능하게 합니다.
1. 🧩 suspend 함수의 특징
- 코루틴 내부에서만 호출 가능 (또는 다른 suspend 함수에서 호출)
- 실제로는 비동기 처리를 위한 상태머신(state machine) 으로 변환됨
- 콜백을 대체하며 가독성을 높
suspend fun fetchUser(): User {
delay(1000)
return User("Alice")
}
// 위 함수는 1초간 지연된 뒤 User 객체를 반환합니다.
2. ⚙️ suspend의 동작 원리
- 컴파일 시 상태를 저장할 수 있는 상태머신 형태로 변환
- 중단 지점마다 continuation 객체를 만들어 나중에 재개 가능
- 실제 스레드를 블로킹하지 않고, 스케줄러가 재개 시점을 관리
suspend fun doWork() {
println("start")
delay(1000)
println("end")
}
// 위 예제에서 delay 중에는 스레드를 점유하지 않음
3. 📝 작성 시 주의사항
- suspend 함수 자체는 비동기 스레드가 아님 (여전히 코루틴 컨텍스트에 따라 동작)
- 무조건 CoroutineScope 내에서 실행해야 함
- suspend 함수 내부에서 블로킹 함수를 직접 호출하면 코루틴 이점을 잃을 수 있음
4. 🧾 결론
suspend
는 Kotlin 코루틴의 비동기, 논블로킹 처리의 핵심입니다.
일반적인 콜백 스타일보다 선언적이며 가독성이 뛰어나, 복잡한 비동기 로직을 간결하게 작성할 수 있게 해줍니다.
올바른 코루틴 스코프와 함께 사용해 안정적이고 효율적인 코드를 만들어 보세요.