Platform Thread와 Virtual Thread

토토들·2026년 3월 7일

Java Virtual Thread vs Platform Thread, 그리고 Python No-GIL

현대 서버 개발에서 가장 중요한 고민 중 하나는
"어떻게 하면 더 많은 작업을 동시에 처리할 수 있을까?" 입니다.

최근 등장한 기술들이 바로 이 문제를 해결하려고 합니다.

  • Java의 Virtual Thread (Project Loom)
  • Python의 No-GIL (PEP 703)

이 글에서는 이 두 가지 개념을 정리합니다.


1. Platform Thread vs Virtual Thread (Java)

Java 21에서 등장한 Virtual Thread는 기존 스레드 모델의 한계를 해결하기 위해 등장했습니다.

1. Platform Thread (기존 방식)

기존 Java 스레드는 OS 커널 스레드와 1:1로 매핑됩니다.

특징

  • Java Thread = OS Kernel Thread
  • 생성 비용이 큼
  • 메모리 사용량 큼
  • Blocking 시 자원 낭비 발생

문제점

예를 들어 웹 서버에서 요청 → DB 조회 → 응답

DB 응답을 기다리는 동안

  • 스레드는 아무것도 안 하면서 기다림
  • OS 스레드도 같이 멈춤

비싼 자원을 낭비하게 됩니다.

결과

보통 서버에서 수천개 스레드

이상 만들면 메모리 문제가 발생합니다.


2. Virtual Thread (Java 21+)

Virtual Thread는 JVM이 직접 관리하는 경량 스레드입니다.

OS 스레드와 1:1로 매핑되지 않습니다.

특징

  • JVM이 스케줄링
  • 매우 가벼움
  • 수십만 ~ 수백만 개 생성 가능
  • I/O 작업에 매우 효율적

핵심 동작 방식

Virtual Thread는 Blocking 상황에서 OS 스레드를 점유하지 않습니다.

예시: Virtual Thread A → DB 요청 → 대기

이때 JVM이 OS Thread에서 Virtual Thread A를 떼어냄 (Unmount)

그리고

다른 Virtual Thread를 실행

즉 OS 스레드는 항상 일하도록 유지됩니다.

구조 개념

Platform Thread
└── OS Thread와 1:1 연결

Virtual Thread
└── JVM이 여러 Virtual Thread를
소수의 OS Thread에 스케줄링


Platform Thread vs Virtual Thread 비교

구분Platform ThreadVirtual Thread
관리 주체OS (Kernel)JVM
OS 매핑1:1M:N
생성 비용높음매우 낮음
메모리 사용매우 작음
스레드 수수천 개수십만 ~ 수백만
적합한 작업CPU 연산I/O 작업

2. Python의 No-GIL

Python에는 오래된 구조적 제약이 하나 있습니다.

바로 GIL (Global Interpreter Lock) 입니다.


GIL이란 무엇인가?

CPython에서는 한 번에 하나의 스레드만 Python 코드를 실행할 수 있습니다.

즉, 멀티 스레드 프로그램이어도
실제로는 한 스레드만 실행됩니다.

예시

8코어 CPU가 있어도

Python 코드 실행 → 1코어만 사용

그래서 CPU 연산이 많은 작업에서는

  • 멀티스레딩 성능이 매우 제한됩니다.

No-GIL (PEP 703)

Python 커뮤니티에서는 이 문제를 해결하기 위해

GIL을 제거하는 프로젝트

를 진행했습니다.

목표

멀티코어 CPU를 100% 활용

도입

  • Python 3.13
  • 빌드 옵션으로 No-GIL 활성화 가능

기대 효과

특히 다음 분야에서 성능 향상이 기대됩니다.

  • 데이터 분석
  • AI / 머신러닝
  • 대규모 수치 계산
  • 병렬 처리 시스템

3. 정리

이 기술들은 모두 같은 목표를 가지고 있습니다.

하드웨어 자원을 낭비하지 않고 더 많은 작업을 동시에 처리하기

Platform Thread

  • OS가 직접 관리
  • 무겁고 비싼 스레드

Virtual Thread

  • JVM이 관리
  • 매우 가벼움
  • I/O 서버에 최적

No-GIL

  • Python의 단일 스레드 실행 제한 제거
  • 멀티코어 CPU 성능 활용

한 줄 정리

Platform Thread → OS가 관리하는 무거운 스레드
Virtual Thread → JVM이 관리하는 경량 스레드
No-GIL → Python의 병렬 실행 제한 제거

profile
패션과 개발을 좋아합니다.

0개의 댓글