Virtual Thread

기존 Thread는 실제 OS의 Thread와 1대1 대응됩니다. 여기서 너무 많은 Thread를 생성하면 오버헤드가 발생해 성능 저하가 발생되는데요

Java 17부터 추가된 Virtual Thread는 실제 스레드에 비해 경량화되어 있으며, 수백만 개의 스레드를 생성하더라도 소프트웨어적인 부하를 크게 줄일 수 있습니다. 사용하면 하나의 Thread에 여러 Vitrual thread가 대응됩니다.

import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class VirtualThreadExample {

    public static void main(String[] args) {
        // Executor 생성
        var executor = Executors.newVirtualThreadExecutor();

        // 가상 스레드로 실행할 작업 제출
        executor.submit(() -> {
            System.out.println("가상 스레드에서 실행 중");
        });

        // executor를 종료하기 위해 shutdown 호출
        executor.shutdown();

        try {
            // 모든 작업이 완료될 때까지 대기
            executor.awaitTermination(5, TimeUnit.SECONDS);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Leave a Comment