Coroutine - Global Scope  / runBlocking

2024. 11. 20. 13:07Kotlin

코루틴은 비동기 프로그래밍을 쉽게 구현하기 위한 경량 스레드이다

Coroutine Scope - 코루틴의 생명주기를 관리하는 역할

Global Scope / runBlocking

Global Scope

GlobalScope는 코루틴을 애플리케이션 전체의 수명 동안 실행하도록 하는 범위입니다. GlobalScope에서 시작된 코루틴은 명시적으로 취소되지 않는 한 계속 실행됩니다. 이는 주로 백그라운드 작업이나 애플리케이션의 수명 동안 지속되어야 하는 작업에 사용됩니다.


import kotlinx.coroutines.*

fun main() {
    GlobalScope.launch {
        // 백그라운드에서 실행될 코루틴
        delay(1000L)
        println("GlobalScope: 코루틴 실행 완료")
    }

    println("메인 함수 실행 중")
    // 메인 함수가 종료되지 않도록 잠시 대기
    Thread.sleep(2000L)
}

수명 주기: GlobalScope에서 시작된 코루틴은 애플리케이션의 전체 수명 동안 실행됩니다.
취소: 명시적으로 취소하지 않으면 계속 실행됩니다.
컨텍스트: 기본적으로 Dispatchers.Default를 사용하여 백그라운드 스레드에서 실행됩니다.

runBlocking

runBlocking은 현재 스레드를 블록하면서 코루틴을 실행합니다. 주로 테스트나 메인 함수에서 비동기 코드를 동기적으로 호출할 때 사용됩니다. runBlocking 내에서 실행된 모든 코루틴은 해당 블록이 완료될 때까지 실행됩니다.


import kotlinx.coroutines.*

fun main() {
    runBlocking {
        // runBlocking 내부에서 실행될 코루틴
        launch {
            delay(1000L)
            println("runBlocking: 코루틴 실행 완료")
        }

        println("runBlocking: 메인 블록 실행 중")
    }
    println("메인 함수 종료")
}

'Kotlin' 카테고리의 다른 글

Dispatchers  (0) 2024.11.27
Continuation  (0) 2024.11.27
Coroutine - Suspend  (1) 2024.11.20
Coroutine VS Thread  (0) 2024.11.20
코틀린의 List와 Array  (0) 2024.01.26