2011-02-28 2 views
1

작업을 예약하는 데 사용할 수있는 오픈 소스 스레드 풀 lib를 찾고 있었고 개별 작업이 완료되면 나머지 작업을 완료 할 수 있도록 스레드에 알림을 원합니다. 당신은 비슷한 종류의 일을하고있는 오픈 소스 라이브러리를 알고 계십니까? 다중 diff 서버에서이 lib를 사용 중일 수 있습니다.오픈 소스 스레드 풀 lib

내 작업의 기본 개요는 항목 목록이 있습니다. 각 항목은 JMS/Webservice를 통해 다른 시스템에 제출 된 다음 처리중인 각 항목에 대한 응답을 기다린 다음 나머지 작업을 수행해야합니다.

미리 감사드립니다.

답변

3

j.u.c ThreadPoolExecutor? 적절하게 싸서 Future의 현명한 사용과 결합하면 명시된 사양을 충족해야합니다. 특정 "다음 작업 집합이 완료 될 때까지이 스레드 차단"동작이있는 경우 CompletionService을 사용할 수도 있습니다.

또 다른 답변자는 완전히 fleshed-out 작업 예약 서비스가 필요하다면 Quartz Scheduler을 사용할 수 있습니다. 그것은 당신의 문제에 대한 과잉이라고 생각되지만, 구체적인 것은주지 않았습니다. 이 길을 따라 가면 여기에 lot of good Q+A on Quartz Scheduler이 있습니다. 다음

+0

-Quartz위한 작업 같은데 내 답은 TPE에 당신을 가리키고 있습니다. 왜냐하면 당신이 정말로 강력한 작업 스케줄링 장치를 필요로하는지 여부는 당신의 질문에서 분명하지 않기 때문입니다. 초기 작업에서 독립적 인 작업을 중단하고 완료를 기다리고 싶어하는 웹 서비스가있는 것처럼 들립니다. 스케쥴러 태스크가 정말로 필요하다면 QuartzScheduler (@ harschware의 대답 참조)가 올바른 해결책이다. – andersoj

+0

감사합니다 andersoj, 초기 proptotyping 후 석영은 우리의 필요에 맞는 생각하고 미래에 우리 cron 작업이 필요할 수도 있습니다. 이 정보에 대해 대단히 감사합니다. – user509755

1

체크 아웃 ScheduledExecutors, 실행 beepForAnHour 번 후 10 초마다 이후 십초 :부터

import static java.util.concurrent.TimeUnit.*; 
class BeeperControl { 
    private final ScheduledExecutorService scheduler = 
     Executors.newScheduledThreadPool(1); 

    public void beepForAnHour() { 
     final Runnable beeper = new Runnable() { 
       public void run() { System.out.println("beep"); } 
      }; 
     final ScheduledFuture<?> beeperHandle = 
      scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS); 
     scheduler.schedule(new Runnable() { 
       public void run() { beeperHandle.cancel(true); } 
      }, 60 * 60, SECONDS); 
    } 
} 

:

http://download.oracle.com/javase/6/docs/api/java/util/concurrent/ScheduledExecutorService.html