오늘의 코루틴 실습 코드steemCreated with Sketch.

image.png

위 이미지는 단순한 썸네일이구요... 오늘의 실습 코드는 아래와 같습니다.

import kotlinx.coroutines.*

fun main() {
    println("start\n")

    GlobalScope.launch {
        for (i in 1..3000) {
            print("$i ")
        }
    }
    GlobalScope.launch {
        for (j in 10000..13000) {
            print("$j ")
        }
    }

    Thread.sleep(5000)
    println("\n\nend")
}

저번 코드와 다른 점은요. runBlocking 함수 호출을 없앴구요. 그 안에 있던 코드를 밖으로 끄집어냈습니다.


실행 결과

실행 결과는 그때 그때 달라요. 왜냐면 GlobalScope.launch 코루틴 빌더 2개 시작 후 이들의 실행은 불규칙적이기 때문입니다. 아래는 그 중 한 예입니다.

image.png

1번째 코루틴은 1부터 3000까지 프린트하구요. 2번째 코루틴은 10000부터 13000까지 프린트합니다. 위 결과를 보면 두 코루틴들이 번갈아가며 실행됨을 알 수 있어요.


GlobalScope.launch 메소드의 의미

모든 코루틴들은 생명주기가 있습니다. GlobalScope는 그 중 하나이구요. 이것은 코루틴의 생명주기가 프로그램의 시작부터 끝까지임을 의미합니다. 만약 메인 함수가 종료되면, 이 메소드로 실행 중인 코루틴들도 종료됩니다.


그런데...

https://play.kotlinlang.org

이 사이트에서 위 코드를 실행한 결과에서는 코루틴 실행 결과가 먼저 출력되고 start, end가 나중에 출력이 됩니다. 책과 인터넷에서 설명한 것과는 달라서 뭐가 맞는 것인지 의아하네요. 이와 같이 코루틴을 공부하면서 아리송한 점들이 있습니다. 좀더 공부하면서 내용 정리를 해야 할 것입니다.

Posted through the AVLE Dapp (https://avle.io)

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Upvoted! Thank you for supporting witness @jswit.