본문 바로가기
JAVA

[ JAVA ] 자바 쓰레드 풀(Thread Pool) 구현

by 정윤재 2011. 10. 17.

자바에서 쓰레드 limit 를 지정해서 pool 을 구현 할 수 있는 것이

1.5 부터 있어서 확인 후 서술 하여 본다.

1. 일단 Runnable 로 쓰레드로 실행 될 클래스를 작성한다.

public class URLContentCompareThread  implements Runnable,ContentCompareThread{
    public void run(){
       .......................................
    }
}

2. 쓰레드 실행 시키는 Class 에서 Runnable 클래스 객체 만든다.

URLContentCompareThread uRLContentCompareThread  =    new URLContentCompareThread(contentpageDTO,list,uRLContentsDao);

3. 쓰레드 풀 구현할 Pool 객체를 생성자에 limit Thread 갯수(int)를 넣어서
만들어 준다.
ScheduledExecutorService scheduledExecutorService  =     new ScheduledThreadPoolExecutor(threadCount);
//threadCount 는 int 형

4. 쓰레드 풀 구현 객체에 Runnable 구현한 객체에 넣어서 쓰레드를 실행시켜준다.
scheduledExecutorService.execute(uRLContentCompareThread);

==============================================================
스프링 3.0 이상에서 사용법

applcationContext.xml 에서 

1. <task:annotation-driven/>
와 같이 task annotation 을 선언해주고

2. <task:executor id="taskExecutor" pool-size="0-30" queue-capacity="40"/>
 와 같이 taskExecutor 를 선언해 준다.

3. 쓰레드 실행 시킬 클래스에
 @Autowired
 private TaskExecutor taskExecutor;
와 같이 변수 선언 해주고

4. Runnable 로 쓰레드로 실행 클래스를 작성한다.

public class URLContentCompareThread  implements Runnable,ContentCompareThread{
    public void run(){
       .......................................
    }
}

5. 쓰레드 실행 시킬 클래스에서

     //Spring Thread Pool 구현*********************************************
     URLContentCompareThread uRLContentCompareThread  =    new URLContentCompareThread(contentpageDTO,list,uRLContentsDao);
     //최대 쓰레드 갯수 설정이 applicationContext.xml 로 옮겨감
     taskExecutor.execute(uRLContentCompareThread);

     //***************************************************************

와 같이 구현해 주면 된다.

댓글