inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

2시간으로 끝내는 코루틴

3강. 코루틴 빌더와 Job

Job 질문이 있습니다

203

갸나다로

작성한 질문수 6

1

이전 강의 설명에서

아래의 코드가 실행될 때 launch로 만든 코루틴이 바로 실행되지 않고 다음 코드로 넘어간다고 했는데

fun main(): Unit = runBlocking {
    println("START")
    launch {
    	newRoutine()
    }
    println("END")
}

왜 아래의 코드에서는 job 객체를 변수에 담으면 다음 코드로 넘어가는게 아니라 바로 실행이 되는건가요?

fun main(): Unit = runBlocking {
    val job = launch {
        (1..5).forEach {
            printWithThread(it)
            delay(500)
        }
    }

    delay(1_000L)
    job.cancel()
}

kotlin coroutine

답변 1

1

최태현

안녕하세요 갸나다로님! 🙂 질문 주셔서 감사합니다.

결론부터 말씀드리면, 작성해주신 코드는 job 객체를 변수에 담더라도 다음 코드로 넘어갔는데, delay를 만나서 launch 안의 코드가 실행된 것입니다!

delay(1_000L) 함수 호출을 제외하고 실행시켜보시면, job을 만들자마자 job.cancel() 이 호출되며 표준 출력 없이 프로그램이 종료될거에요! 🙂

또 궁금하신 점 있으시면 언제든 편하게 질문 남겨주세요~

감사합니다! 🙏

0

갸나다로

아! 그럼 launch 로 만든 코루틴 안에서 처음 2번 반복이 될때 delay(500) 을 만나서 runBlocking의 코루틴이 재개되어도 delay(1_000L)때문에 1초가 지나기 전까지는 다시 launch의 코루틴으로 돌아가고 2번 째 반복이 끝나고 delay(500) 을 만나서 runBlocking코루틴으로 넘어가면 그때 job.cancel()을 호출하게 된거라고 이해하면 될까요?

0

최태현

정확하십니다! 👍 👍 delay를 만날 때마다 실행을 대기 중인 또 다른 코루틴이 있는지 확인하는 방식으로 동작한다고 이해해주시면 되어요~!

1

갸나다로

정말 감사합니다!

강사님 덕분에 코루틴에 대해 자세히 알게되어 너무 기쁘네요 ㅎㅎㅎ

0

최태현

아이고~ 열심히 들어주셔서 제가 감사드리죠! 🙏 언제든 편하게 질문 올려주세요~!!

Dispatchers 별 차이점 관련 질문

0

91

1

코루틴과 가상 스레드의 차이가 궁금합니다.

1

307

2

Coroutine과 ThreadLocal관련 질문

0

152

2

선생님 강의를 듣고 크롤링에 코루틴을 적용해보고 있습니다. 그런데 코루틴이 하나만 나와서 동시처리가 안되는데 혹시 봐주실 수 있나요??

1

114

1

7강에 대해서 궁금증이 있는데요

1

116

2

Spring MVC에서 corountine 활용 방안

1

538

1

9강 코루틴 중단과 재개관련 문의 드립니다.

0

124

2

suspend 함수에 관해 추가적인 질문 있습니다! (runcatching, Result)

0

126

1

간단 질문.. join() vs delay()

0

157

2

코루틴을 잘 사용하고 있는지 궁금합니다.

0

196

1

CoroutineScope & Dispatcher 질문

0

160

2

async await 관련 질문

1

135

2

코루틴 실행 순서 궁금합니다.

1

231

2

corutine task에 대한 질문

1

195

2

completing의 존재의의가 궁금합니다.

1

161

1

코루틴 dispatcher IO관련 질문

0

187

1

스프링 MVC 환경에서의 코루틴

1

2093

1

자식1, 2와 부모코루틴의 관계

1

225

1

한 suspend fun 의 반환값이 다른 suspend fun의 파라미터로 쓰일 때

1

329

2

delay 함수에 대해 질문이 있습니다

1

392

1

runBlocking을 사용하는 경우가 있을까요?

0

399

1

delay가 없으면 실행 안 되는 이유

0

294

1

코루틴 스코프

0

312

1

CoroutineScope 와 withContext 의 차이를 잘 모르겠습니다.

1

699

1