자바에서 쓰레드 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);
//***************************************************************
와 같이 구현해 주면 된다.
'JAVA' 카테고리의 다른 글
[ JAVA ] XML 만들기 (0) | 2012.01.18 |
---|---|
[ JAVA ] String 두개 XOR 연산 (0) | 2011.10.19 |
[ 자바 ] 리눅스 에서 자바 어플리케이션 실행2 (2) | 2011.09.28 |
[ JAVA ] PUSH 3 rd Party Server 구현 ( C2DM - 안드로이드 기기와 통신 ) (0) | 2011.09.23 |
[ JAVA ] 간단한 ant build 만들기 (5) | 2011.05.11 |
댓글