본문 바로가기

Programming/JAVA

멀티 스레드(9) - 스레드 풀 2 : 스레드 풀 생성 및 종료 1

 

 

 

○ 스레드풀 생성

 

앞선 스레드풀 개념에서 설명했듯이, ExecutorService 인터페이스의 구현 객체는 Executors 클래스의 static 메서드를 이용해 생성하게 됩니다. 아래 두 가지 메서드 중 하나를 사용하게 됩니다. 

 

메서드명(파라미터) 초기 스레드 수 코어 스레드 수 최대 스레드 수
newCachedThreadPool( ) 0 0 Integer.MAX_VALUE
newFixedThreadPool(int nThreads) 0 nThreads nThreads

 

 * 초기 스레드 수 : ExecutorService 객체가 생성될 때 기본적으로 생성되는 스레드 수를 의미

 * 코어 스레드 수 : 스레드 수 증가 후, 사용하지 않는 스레드를 스레드 풀에서 제거할 때 최소한으로 유지해야 할 스레드 수

 * 최대 스레드 수 : 스레드풀에서 관리하는 최대 스레드 수

 

 

(1) newCachedThreadPool( ) 메서드로 생성된 스레드풀의 특징

  - 초기 스레드 개수와 코어 스레드 개수는 0개이고, 스레드 개수보다 작업 개수가 많으면 새 스레드를 생성해 처리합니다.

  - 이론적으로는 int 값이 가질 수 있는 최대값만큼 스레드가 추가된다고 보지만, OS 성능이나 상황에 따라 달라집니다.

  - 1개 이상의 스레드가 추가되었을 대, 60초 동안 추가된 스레드가 아무 작업을 하지 않으면 추가된 스레드를 종료하고 풀에서 제거합니다.

  - newChachedThreadPool( )을 호출해서 ExecutorService 구현 객체를 얻는 코드는 아래와 같습니다. 

ExecutorService executorService = Executors.newChachedThreadPool();