<aside> <img src="/icons/info-alternate_blue.svg" alt="/icons/info-alternate_blue.svg" width="40px" />
이번 세션은 JAVA 21 Virtual Thread 와 기존 Thread Pool 모델 위주입니다!
잘못된 정보가 있다면 언제든지 지적 감사합니다. 자료 재조사 후, 노티 드리겠습니다.
.png)
그림 1 - Java Thread Model
JAVA의 Thread(Platform Thread)는 Kernel Thread 와 1대1 관계
JVM 은 JNI 레이어를 통해 Kernul Thread 를 생성 또는 종료할 것을 요청 (System Call)
Kernel Thread 의 생성 및 관리 비용이 비싸기 때문에 보통 Thread-Pool 을 만들어 사용
→ 대표적으로 Tomcat 역시 Thread Pool 사용

그림 2 - Thread Model 한계점 (출처: https://mangkyu.tistory.com/309)
Thread-Per-Request 방식의 Spring MVC 에서 Throughput을 늘리기 위해선 Thread 의 수를 늘려야함
→ 하지만, Kernel Thread 의 최대 개수는 OS 에 종속적이라 요청량에 비례하여 늘리기엔 한계
만약 새로운 요청이 들어왔을 때, Thread Pool 내의 모든 Thread 가 현재 Blocking 중이라면?
→ 새로운 요청은 Blocking 작업이 종료되어 Thread Pool 에 반환될 때까지 Tomcat 내부 큐에서 대기
.png)
그림 3 - Java Virtual Thread 구조