코틀린 suspend에 대한 내용을 아래와 같이 정리해보았습니다.
개념 및 사용예제를 통해 이해해보자.
suspend란?
Kotlin에서 suspend 키워드는 코루틴을 사용해 비동기 작업을 처리하기 위해 함수에 붙이는 키워드입니다. suspend 함수는 일반 함수처럼 호출할 수 없으며, 코루틴 내부 또는 다른 suspend 함수에서만 호출할 수 있습니다. 이는 해당 함수가 잠재적으로 시간이 오래 걸릴 수 있는 작업을 포함하고 있다는 의미입니다. 예를 들어, 네트워크 요청이나 파일 I/O와 같은 작업은 코루틴을 사용해 메인 스레드를 차단하지 않고 처리할 수 있습니다.
suspend 함수의 특징
- 비동기 처리 지원: suspend 함수는 비동기로 실행될 수 있어 메인 스레드를 차단하지 않고도 장시간 작업을 수행할 수 있습니다.
- 컨텍스트 전환: suspend 키워드를 사용하면 코루틴이 특정 시점에서 중단되었다가 다시 재개될 수 있어 효율적인 스레드 관리가 가능합니다.
- 코드 가독성 향상: suspend 함수는 일반적인 비동기 콜백 코드보다 가독성이 높아지고 유지보수성이 증가합니다.
suspend 함수 예제
suspend fun fetchData(): String {
delay(1000L) // 네트워크 요청을 시뮬레이션하는 지연 함수
return "데이터가 성공적으로 로드되었습니다."
}
fun main() = runBlocking {
println("로딩 중...")
val result = fetchData() // `fetchData`가 완료될 때까지 기다립니다.
println(result)
}
위 예제에서 fetchData는 suspend 함수이므로, runBlocking과 같은 코루틴 빌더 내부에서 호출해야 합니다. delay 함수는 일종의 비동기 함수로, Thread.sleep과 달리 스레드를 차단하지 않고 지연을 발생시킵니다.
언제 suspend를 사용할지 고려해야 하는 경우
- 네트워크 요청: 서버에서 데이터를 가져오는 HTTP 요청
- 데이터베이스 쿼리: 로컬 또는 원격 데이터베이스 접근
- 파일 I/O 작업: 파일 읽기 및 쓰기 작업
- 리스트나 대량 데이터 처리: 비동기적으로 처리할 때 유리합니다.
suspend 함수를 설계할 때 작업의 시간이 오래 걸릴 것으로 예상되거나 비동기 처리가 필요한 경우에만 적용하는 것이 좋습니다.
'Kotlin' 카테고리의 다른 글
[코틀린] 스코프란? - 개념 이해하기 (0) | 2024.11.22 |
---|---|
코틀린에서 함수 재정의(overriding)하기 (2) | 2024.11.06 |