
백엔드
Java 가상 스레드, 깊이 있는 소스 코드 분석과 작동 원리 3편 - 고정 이슈와 한계
두줄요약
가상 스레드의 고정(pinned) 이슈를 JDK 소스 코드로 분석했습니다. 블로킹 I/O와 synchronized, JNI 사용 시 발생 가능성과 한계를 살펴봤습니다.
핵심 내용
- 가상 스레드의 고정(pinned) 이슈와 작동 원리를 JDK 소스 코드 기준으로 분석
- 컨텍스트 스위칭 중 캐리어 스레드가 교체되지 않고 고정되는 과정과 예외 흐름 정리
- 고정 원인을
NATIVE,MONITOR,CRITICAL_SECTION으로 구분
주의할 점
- 블로킹 I/O나 synchronized, JNI 사용 시 고정 이슈 발생 가능성 점검 필요
- 고정 상태에서는 캐리어 스레드가 CPU에서 격리돼 성능 저하와 데드락 위험 증가
적용해볼 점
- 가상 스레드 도입 전 고정 가능 지점 사전 점검 필요
- synchronized와 네이티브 호출 경로를 중심으로 병목과 한계 검토 필요