Akashic Records

코루틴의 이해 본문

Kotlin for Beginners

코루틴의 이해

Andrew's Akashic Records 2023. 6. 2. 11:07
728x90

코루틴은 비동기 작업을 단순화하는 기능으로, 복잡한 비동기 로직을 마치 순차적인 코드처럼 작성할 수 있게 해줍니다. 이를 통해 동시에 실행되는 여러 작업을 효율적으로 관리할 수 있습니다.

 

  1. 코루틴의 선언

launchasync 같은 코루틴 빌더를 사용해서 코루틴을 시작할 수 있습니다. 이 빌더들은 코루틴 스코프 내에서 비동기 작업을 실행합니다.

예제:

import kotlinx.coroutines.*

fun main() {
    GlobalScope.launch { // 새로운 코루틴을 백그라운드에 실행합니다.
        delay(1000L) // 1초 동안 비동기로 대기합니다.
        println("World!") // 딜레이 후 출력합니다.
    }
    print("Hello, ") // 코루틴이 지연되는 동안 메인 스레드는 계속 실행됩니다.
    Thread.sleep(2000L) // 메인 스레드를 2초간 멈추어 코루틴이 끝날 때까지 기다립니다.
}

이 예제에서 GlobalScope.launch 빌더를 사용해서 새로운 코루틴을 시작합니다. delay(1000L) 함수는 코루틴을 1초 동안 지연시키지만 메인 스레드는 계속 실행됩니다.

 

  1. 코루틴의 반환 값

async 빌더를 사용하면 코루틴이 값을 반환할 수 있습니다. 반환 값은 Deferred<T> 타입으로 받아올 수 있으며, .await()을 통해 실제 결과를 얻을 수 있습니다.

예제:

import kotlinx.coroutines.*

fun main() = runBlocking {
    val deferred = async { // 코루틴이 결과를 반환합니다.
        delay(1000L)
        "World!"
    }
    print("Hello, ")
    print(deferred.await()) // 코루틴의 결과를 기다립니다.
}

이 예제에서 async 빌더를 사용해서 코루틴을 시작하고, 결과를 "World!"로 반환합니다. deferred.await()은 코루틴의 결과가 준비될 때까지 기다립니다.

 

코루틴은 비동기 작업을 간편하게 처리하는 데 중요한 도구입니다. 코루틴을 사용하면 복잡한 콜백 구조를 피하고,

마치 일반적인 동기 코드처럼 작성할 수 있습니다. 이로 인해 코드의 가독성이 향상되며, 동시에 여러 비동기 작업을 효과적으로 관리할 수 있습니다.

728x90

'Kotlin for Beginners' 카테고리의 다른 글

코루틴과 스레드의 차이점  (0) 2023.06.02
비동기 프로그래밍  (0) 2023.06.02
제네릭  (0) 2023.06.02
컬렉션  (0) 2023.06.02
고차 함수  (0) 2023.06.02
Comments