본문 바로가기
코틀린

코루틴을 활용한 비동기 프로그래밍 기초: 예제를 통한 병렬 작업 이해 및 실행

by 플라퉁 2023. 6. 26.
728x90
반응형

 

 

 


코루틴은 비동기 프로그래밍을 간편하게 작성하고 관리하기 위한 방법 중 하나입니다. 

 

코루틴은 실행을 멈추고 재개할 수 있는 일종의 경량 스레드라고 볼 수 있습니다. 

 

일반적인 비동기 프로그래밍에서 콜백 혹은 Promise를 사용해야 하는 번거로움을 줄여줍니다. 

 

여기 예시를 통해 코루틴을 사용한 비동기 프로그래밍의 기초를 설명해 드리겠습니다.

import kotlinx.coroutines.*

fun main() {
    // 비동기 작업을 위한 코루틴 스코프 생성
    val scope = CoroutineScope(Dispatchers.Default)

    // 코루틴 실행 및 비동기 작업
    scope.launch {
        println("비동기 작업 시작")

        val result = async {  // async는 결과를 반환하는 비동기 작업 블록을 정의
            delay(1000)  // 비동기 작업 시뮬레이션을 위한 일시 중지
            "비동기 작업 완료"
        }.await()  // 결과를 기다렸다가 반환

        println(result)
    }

    println("메인 스레드 계속 실행")
    
    // 코루틴의 비동기 작업 완료를 기다리지 않고 메인 스레드 종료
    Thread.sleep(2000)
}

 

위 예시에서 launch 함수를 사용하여 별도의 스레드에서 수행되는 코루틴을 생성합니다.

 

내부에서 async 함수를 사용하여 비동기 작업을 정의합니다.

 

이 작업은 1초 후에 "비동기 작업 완료"를 반환합니다.

 

코루틴에서 delay 함수를 통해 일시 중지할 수 있습니다.

 

주로 시뮬레이션을 위해서 사용되며, 여기서는 1초의 딜레이를 줌으로써 비동기 작업을 시뮬레이션합니다.

 

await 함수를 통해 결과를 기다린 뒤 반환하여 변수 result에 저장합니다. 이후 result를 출력합니다.

 

메인 스레드 외에 별도의 스레드에서 비동기 작업이 실행되므로, 메인 스레드는 동작이 끝나면 바로 종료됩니다.

 

따라서 Thread.sleep(2000)으로 메인 스레드를 잠시 대기시킵니다.

 

 

 

 

 

실행 결과는 다음과 같습니다

 

메인 스레드 계속 실행
비동기 작업 시작
비동기 작업 완료

 

따라서, 비동기 작업이 별도의 스레드에서 실행되어 메인 스레드의 동작을 방해하지 않고, 

필요한 시간 동안 비동기 작업이 수행됩니다. 

이를 통해 쉽게 비동기 작업을 핸들링하고 복잡한 콜백 체인을 피할 수 있습니다.

 

 

 

 

 

 

728x90
반응형

댓글