[java] 쓰레드 풀의 종류

이번 포스트에서는 자바에서 사용되는 쓰레드 풀의 종류 에 대해 살펴보겠습니다.

  1. 고정 크기 쓰레드 풀
  2. 가변 크기 쓰레드 풀
  3. 작업 큐를 이용한 쓰레드 풀

1. 고정 크기 쓰레드 풀

고정 크기 쓰레드 풀은 ThreadPoolExecutor 클래스를 사용하여 생성됩니다. 쓰레드의 최대 개수가 정해져 있어 쓰레드가 계속 생성되지 않습니다. 주로 안정된 환경에서 사용됩니다.

ExecutorService executor = Executors.newFixedThreadPool(5);

2. 가변 크기 쓰레드 풀

가변 크기 쓰레드 풀은 ExecutorService 인터페이스의 newCachedThreadPool 메서드를 사용하여 생성됩니다. 쓰레드의 최대 개수가 정해져 있지 않으며, 필요에 따라 쓰레드가 동적으로 생성 및 제거됩니다.

ExecutorService executor = Executors.newCachedThreadPool();

3. 작업 큐를 이용한 쓰레드 풀

LinkedBlockingQueue 등의 작업 큐를 이용하여 쓰레드 풀을 구현할 수 있습니다. 작업 큐를 통해 쓰레드 간 효율적인 작업 분배가 가능하며, 작업이 큐에 쌓이는 경우에도 쓰레드가 생성됩니다.

ExecutorService executor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.SECONDS, new LinkedBlockingQueue<>());

이상으로 자바에서 사용되는 쓰레드 풀의 종류에 대해 다뤄보았습니다. 더 자세한 내용은 Oracle Java Documentation 를 참고하세요.