inflearn logo
강의

Course

Instructor

Coroutine that finishes in 2 hours

Lesson 2. Threads and Coroutines

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

310

donghunshin8844

1 asked

1

안녕하세요. 좋은 강의 감사드립니다.
코루틴에 대한 설명을 듣고 보니,
자바 21에 등장한 Virtual Thread와 그 개념이 매우 비슷하다고 생각이 들었습니다.
코루틴을 실행시키는 스레드는 어찌보면 Virtual Thread 의 carrier thread로 생각할 수 있고,
코루틴 자체를 virtual thread 라고 생각해보면,
결국 두 개념이 용어만 다를 뿐 결과적으로는 동일한 기능(?)을 수행하는 것으로 보입니다.

제가 궁금한 것은 자바에서 Virtual Thread로 작성된 코드가 100퍼센트 코틀린 - 코루틴으로 변환 가능한지,
그리고 그 역도 성립하는 것인지 궁금합니다.

감사합니다.

kotlin coroutine

Answer 2

0

lannstark

안녕하세요!! 열심히 공부할게요님~ 좋은 질문 감사합니다. 🙂

결론부터 말씀드리면 겉으로 보기에는 비슷해 보이나, 두 기술의 등장 목적이 다르고 실제 내부 동작도 다르기에 코루틴과 가상 스레드는 차이가 있습니다.

따라서 Virtual Thread로 작성된 코드가 코틀린-코루틴으로 100% 호환되기는 어려운 것 같아요!

 

아래 장표는 <자바 9부터 21까지> 강의의 일부인데요!

 

image.png

 

댓글을 작성하는 시점에 개인적으로는 아직까지 Virtual Thread 을 실무 환경에서 적극적으로 사용하기에는 어려움이 있는 것 같습니다. 그 이유는.. 아직 Virtual Thread의 pinning 문제가 완전히 해결되지 않았고, 코루틴을 사용하는 코드가 조금 더 유연하게 느껴져서 그렇습니다.

 

관련해서 Virtual Thread만 확인하고자 유료 강의를 추가로 구입하기에는 다소 부담이실 수 있으니 https://www.youtube.com/watch?v=bOLChQ3fFQo 영상을 보시는 것도 좋을 것 같습니다.

감사합니다. 🙇

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 열심히공부할게요님.

코루틴과 자바의 Virtual Thread는 비슷한 개념으로 비동기 작업을 보다 효율적으로 처리하기 위한 기능을 제공하지만, 몇 가지 주요 차이점이 있습니다.

  1. 운영 방식: 코루틴은 특정한 스레드 풀에서 처리되지 않고, 기본적으로 코드 상에서 매우 가볍고 빠르게 Context Switching을 할 수 있는 방법을 제공합니다. 반면, Virtual Thread는 스레드의 경량화된 형태를 제공하여 스레드 차원에서 작업을 보다 효율적으로 수행합니다.

  2. 변환 가능성: 자바의 Virtual Thread와 코틀린의 코루틴은 상호 운영이 가능하지만, 100퍼센트 변환 가능성에 대해서는 상황에 따라 다를 수 있습니다. 언어와 라이브러리의 차이로 인해 변환 과정에서 작업의 구조나 방식이 달라질 수 있으며, 모든 상황에서 완전히 동일한 방식으로 동작한다고 보기는 어렵습니다.

  3. 사용 예시 및 비교: 기존에 자바의 Virtual Thread로 작성된 코드는 코루틴을 활용하여 유사하게 구현할 수 있지만, 현실적으로는 라이브러리와 함수 호출 방식의 차이로 인해 약간의 수정이 필요할 수 있습니다. 반대로 코루틴에서 Virtual Thread로 변환하는 경우에도 상황에 따라 다르게 접근해야 할 수 있습니다.

아래 유사한 질문과 답변을 확인하시면 코루틴과 관련된 더 많은 정보를 얻을 수 있습니다:

이해를 돕기 위한 참고 링크를 제공드렸습니다. 궁금한 점이 있으면 언제든지 추가로 질문해 주세요. 😊

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Dispatchers 별 차이점 관련 질문

0

92

1

Coroutine과 ThreadLocal관련 질문

0

153

2

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

1

115

1

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

1

116

2

Spring MVC에서 corountine 활용 방안

1

540

1

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

0

124

2

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

0

126

1

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

0

157

2

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

0

196

1

CoroutineScope & Dispatcher 질문

0

161

2

async await 관련 질문

1

136

2

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

1

232

2

corutine task에 대한 질문

1

195

2

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

1

161

1

코루틴 dispatcher IO관련 질문

0

187

1

Job 질문이 있습니다

1

203

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

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

1

701

1