inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

2시간으로 끝내는 코루틴

Dispatchers 관련 궁금증입니다.

해결된 질문

217

이예진

작성한 질문수 1

1

 withContext(Dispatchers.IO) {

        println(“AA : ${Thread.currentThread().name}")

        val asyncOrigin = async {

            println(“BB : ${Thread.currentThread().name}")

            origin.invoke()

        }

}

 

 

// 결과

AA : DefaultDispatcher-worker-1 @coroutine#2

BB : DefaultDispatcher-worker-3 @coroutine#3

 

안녕하세요.

Dispatchers 사용부분이 궁급함니다.

따로 asyncOrigin에서 Dispatchers를 다르게 쓰겠다고 설정한게 없는데 결과가 의문이였습니다.

 

물론 코루틴은 각자 실행이여서 코루틴의 번호가 다른건 이해했습니다만,

부모꺼의 스레드를 가져다 쓸거다라고 생각했는데 스레드도 부모꺼를 안쓰고 다른게 맞는걸까요?

어떤 원리인지 궁금합니다.

 

 

 

kotlin coroutine

답변 1

0

최태현

안녕하세요 예진님! 😊 질문 주셔서 감사합니다.

 

결론부터 빠르게 말씀드려보면, 부모 코루틴의 Dispatcher를 동일하게 사용한 것이 맞습니다!

 

작성해주신 코드에서

 

 withContext(Dispatchers.IO) {

        println(“AA : ${Thread.currentThread().name}")

        val asyncOrigin = async {

            println(“BB : ${Thread.currentThread().name}")

            origin.invoke()

        }

}

 

withContext 를 통해 Dispatcher를 Dispatchers.IO를 사용하도록 변경한 후, async를 통해 코루틴을 만들게 되면, async 안도 마찬가지로 Dispatchers.IO 를 사용하는데요!

Dispatchers.IO 자체가 일종의 스레드풀이기 때문에 한 스레드만 있지 않고, 이름이 다른 스레드에 배정되어 println()이 실행된거라고 봐주시면 될 것 같아요!

DefaultDispatcher-worker-xx 에서 스레드 번호에 따라 xx만 다른 형태죠!! 😊

실제로 println(coroutineContext)를 찍어보시면, 내부에 Dispatchers.IO가 동일하게 들어 있는 것을 확인하실 수 있습니다.

답변이 도움이 되었으면 좋겠습니다. 감사합니다! 🙏

1

이예진

빠른답변 감사합니다:)

Dispatchers 별 차이점 관련 질문

0

93

1

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

1

311

2

Coroutine과 ThreadLocal관련 질문

0

154

2

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

1

115

1

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

1

117

2

Spring MVC에서 corountine 활용 방안

1

540

1

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

0

124

2

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

0

126

1

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

0

158

2

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

0

196

1

CoroutineScope & Dispatcher 질문

0

161

2

async await 관련 질문

1

137

2

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

1

232

2

corutine task에 대한 질문

1

195

2

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

1

161

1

코루틴 dispatcher IO관련 질문

0

187

1

Job 질문이 있습니다

1

204

1

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

1

2096

1

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

1

225

1

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

1

329

2

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

1

394

1

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

0

400

1

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

0

295

1

코루틴 스코프

0

313

1