
백엔드
Java 가상 스레드, 깊이 있는 소스 코드 분석과 작동 원리 1편 - 생성과 시작
두줄요약
Java 가상 스레드의 생성과 시작 과정을 소스 코드로 분석했습니다. 플랫폼 스레드와 Continuation 구조를 통해 동시성 효율을 높이는 원리를 설명했습니다.
핵심 내용
- Java 가상 스레드의 생성과 시작 과정을 OpenJDK 21+35 소스 코드 기준으로 분석한 글
- 플랫폼 스레드와 캐리어 스레드, Continuation 구조를 통해 블로킹 I/O와 스레드 생성 비용을 줄이는 원리 설명
- VirtualThread의 scheduler, cont, runContinuation, state, carrierThread 역할과 start부터 task 실행까지의 흐름 정리
구조와 흐름
- scheduler가 가상 스레드를 실행할 캐리어 스레드와의 연결을 담당
- cont와 runContinuation이 task를 감싸 실행 전후 공통 작업을 처리
- mount와 unmount, Continuation.run, enterSpecial을 거쳐 실제 task가 시작
적용해볼 점
- 가상 스레드의 장점을 이해하려면 OS 레벨 스레드와 애플리케이션 레벨 스케줄링 차이를 함께 살펴볼 필요
- 시작 과정에서의 mount, unmount, 상태 관리가 이후 컨텍스트 스위칭의 기반이 됨
- 다음 편에서 다룰 park, unpark, pinned 이슈까지 함께 보면 내부 동작 이해에 도움