Inflearn brand logo image

인프런 커뮤니티 질문&답변

열심히공부할게요님의 프로필 이미지
열심히공부할게요

작성한 질문수

2시간으로 끝내는 코루틴

2강. 스레드와 코루틴

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

작성

·

79

1

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

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

감사합니다.

답변 2

0

최태현님의 프로필 이미지
최태현
지식공유자

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

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

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

 

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

 

image.png

 

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

 

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

감사합니다. 🙇

0

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

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

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

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

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

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

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

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

열심히공부할게요님의 프로필 이미지
열심히공부할게요

작성한 질문수

질문하기