[java] 자바에서 쓰레드 풀을 생성하는 방법

쓰레드 풀은 많은 요청을 처리할 수 있도록 미리 쓰레드를 생성해 놓고 재사용하는 기법입니다. 자바에서는 ExecutorService 인터페이스를 사용하여 쓰레드 풀을 생성할 수 있습니다.

1. 고정 크기의 쓰레드 풀 생성

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Main {
    public static void main(String[] args) {
        int poolSize = 5;
        ExecutorService threadPool = Executors.newFixedThreadPool(poolSize);
        
        // 쓰레드 풀 사용 예
        for (int i = 0; i < 10; i++) {
            threadPool.execute(new MyTask(i));
        }
        
        threadPool.shutdown(); // 작업 완료 후 쓰레드 풀 종료
    }
}

위의 예제에서 newFixedThreadPool 메서드는 고정된 크기의 쓰레드 풀을 생성합니다.

2. 동적 크기의 쓰레드 풀 생성

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Main {
    public static void main(String[] args) {
        ExecutorService threadPool = Executors.newCachedThreadPool();
        
        // 쓰레드 풀 사용 예
        for (int i = 0; i < 10; i++) {
            threadPool.execute(new MyTask(i));
        }
        
        threadPool.shutdown(); // 작업 완료 후 쓰레드 풀 종료
    }
}

newCachedThreadPool 메서드는 요청에 따라 쓰레드를 동적으로 생성하는 쓰레드 풀을 생성합니다.

결과

자바에서는 ExecutorService 인터페이스와 Executors 유틸리티 클래스를 사용하여 간단하게 쓰레드 풀을 생성하고 관리할 수 있습니다. 고정된 크기의 쓰레드 풀이나 동적으로 크기가 조절되는 쓰레드 풀을 선택하여 애플리케이션의 요구에 맞는 효율적인 멀티쓰레딩을 구현할 수 있습니다.

참고 자료: Oracle 공식 문서