[kotlin] suspend 함수 개념 이해하기

Kotlin에서 suspend 키워드는 코루틴을 위한 함수를 정의할 때 사용됩니다. 이 키워드는 해당 함수가 일시 중단 가능하며, 비동기적으로 실행될 수 있음을 나타냅니다.

Suspend 함수란 무엇인가요?

Kotlin의 suspend 함수는 일시 중단 가능하고 코루틴 내에서 실행될 수 있는 함수를 나타냅니다. 이 함수들은 일시 중단 지점에서 실행을 일시 중지하고, 해당 지점에서 다시 시작할 수 있는 기능을 제공합니다. 이를 통해 비동기적인 코드를 동기적으로 작성하는 것이 가능해집니다.

언제 Suspend 함수를 사용해야 하나요?

일반적으로 네트워크 요청, 파일 입출력, 데이터베이스 액세스와 같은 I/O 작업을 수행할 때 suspend 함수를 사용합니다. 이러한 작업은 시간이 많이 소모되며, 블로킹을 유발하므로 비동기적으로 처리하는 것이 바람직합니다.

예시

아래는 suspend 함수를 사용하여 비동기적으로 데이터를 가져오는 예시 코드입니다.

import kotlinx.coroutines.*

suspend fun fetchDataFromServer(): String {
    // 네트워크 요청 등의 작업 수행
    delay(1000) // 1초 대기
    return "Data from server"
}

fun main() {
    // 코루틴 실행
    GlobalScope.launch {
        val data = fetchDataFromServer()
        println(data)
    }

    Thread.sleep(2000) // 메인 스레드가 너무 빨리 종료되는 것을 방지하기 위한 대기 시간
}

위의 코드에서 fetchDataFromServer 함수는 suspend 함수로 정의되어 있습니다. 이 함수를 코루틴 내에서 호출하고 있으며, delay 함수를 통해 1초의 지연을 시뮬레이션하는 것을 볼 수 있습니다.

결론

Kotlin의 suspend 함수를 사용하면 비동기적인 작업을 보다 간단하게 다룰 수 있으며, 코루틴을 통한 비동기 프로그래밍을 지원합니다.

더 많은 정보를 원하시면 Kotlin 공식 문서를 참고하시기 바랍니다.

그럼 안녕히 계세요!