개요 일반적으로, Process와 Thread의 차이를 말할 때 다음과 같은 글을 마주할 수 있습니다. (Process와 Thread의 차이 : https://nangmandeveloper.tistory.com/4) 위와 같은 글에서 Process와 Thread는 작업 단위, 저장 블록, 공유 자원, 상태 등으로 나누어집니다. 이 글에서는 이러한 부분보다 조금 더 근본적인 이야기를 해보고자 합니다. 단순히 사용하는 자원, Context Switching을 벗어나서, 공부하다가 마주치거나 스터디 중 마주친 질문에 대한 대답을 정리해 보도록 하겠습니다. 문제 소지가 있는 부분에 대한 의견은 언제나 환영입니다. MultiCore의 등장 2005년, 인텔의 펜티엄 D시리즈와 AMD의 애슬론 64 X2시리즈가 발..
개요 지난 글에서 Virtual Thread가 어떻게 다른지, 어떠한 부분에서 연관되어 있는지 알아봤습니다. 이번 글에서는 Virtual Thread의 코드를 따라가보며 어떻게 동작하는지 살펴보겠습니다. Virtual Thread의 LifeCycle Virtual Thread의 라이프사이클을 요약하면 위의 그림과 같은 모습입니다. Virtual Thread는 많은 상태를 가진 상태 머신이고, 이 흐름을 따라가면서 설명하도록 하겠습니다. 그림에 있는 상태 이외에도 더 많은 상태가 있지만, 그림에 나온 주요한 상태만을 간략하게 알아보겠습니다. 1. NEW, STARTED, RUNNABLE Virtual Thread의 생성자 코드입니다. Thread.ofVirtual을 통해 가상 스레드를 생성하면, 위의 생성..
개요 Virtual Thread는 기존 Thread를 완벽하게 대체하는 개념이 아닙니다. 오히려 Thread, Process라기보다는 Task, Runnable에 가깝게 생각해야 이해하기 편합니다. 이번 글에서는 어떠한 부분에서 Virtual Thread와 Thread가 다른지, 어떠한 부분에서 같이 일하게 되는지 알아보겠습니다. Thread LifeCycle에서의 Virtual Thread Thread는 마구잡이로 사용하면 자원의 낭비를 불러올 수 있고, 때문에 ThreadPool에서 관리하여 사용합니다. (ThreadPool - https://nangmandeveloper.tistory.com/7) ThreadPool에서 동작하는 Thread는 다음과 같은 라이프사이클을 가질 것입니다. 1. Thre..