2010-06-11 7 views
0

다른 상태의 Runnable을 스케줄링하고 풀링하는 데 사용할 것을 알아낼 수 없습니다 (각 Runnable 인스턴스의 상태는 서로 다릅니다). 인수를 제공하기 위해 MethodInvokingRunnable과 함께 ScheduledExecutorFactoryBean을 사용할 수 있습니다. 그러나 주요 ScheduledExecutorFactoryBean 메소드를 살펴보면 모든 태스크가 처음부터 시작되어야하는 방식으로 설계되었습니다.스프링 - 다른 상태의 Runnable 스케줄링 및 풀링 (각 Runnable 인스턴스의 상태가 다름)

protected void registerTasks(ScheduledExecutorTask[] tasks, ScheduledExecutorService executor) { 
     for (ScheduledExecutorTask task : tasks) { 
      Runnable runnable = getRunnableToSchedule(task); 
      if (task.isOneTimeTask()) { 
       executor.schedule(runnable, task.getDelay(), task.getTimeUnit()); 
      } 
      else { 
       if (task.isFixedRate()) { 
        executor.scheduleAtFixedRate(runnable, task.getDelay(), task.getPeriod(), task.getTimeUnit()); 
       } 
       else { 
        executor.scheduleWithFixedDelay(runnable, task.getDelay(), task.getPeriod(), task.getTimeUnit()); 
       } 
      } 
     } 
} 

ThreadPoolTaskScheduler로이 시나리오를 설정하는 방법을 생각할 수 없습니다.

여기에서 도와주세요. 당신은


편집 감사합니다 : 단축 버전은 다음과 같습니다. 이초 간격 (다른 상태) 스레드의 다른 인스턴스 "수백 실행됩니다 설치 작업 스케줄러에 어떻게

+0

나는 여러 개의 ScheduledExecutorTasks를 가진 각각의 MethodInvokingRunnable을 가진 여러 ScheduledExecutorFactoryBean을 설치하기 위해 AnnotationConfigApplicationContext를 사용할 수 있다고 생각했다. ... 나는 괜찮은 소리를 낸다. – lisak

+0

What ' 내가해야 할 일은, 각각 다른 프록시와 타겟을 가진 http get 요청을 나타내는 쓰레드를 스케줄링하는 것입니다. 몇 초 후에 시작합니다. 수천 개가 있습니다. 연결은 최대 30 초까지 지속되므로 동시 처리가 필요합니다. – lisak

+0

이제 제가 그 일을 생각해보십시오. 스케줄러는 제가하고 싶은 일을 절대적으로 생각하지 않습니다. 그들은 하나의 불변 태스크/Runnable을 스케쥴링하기로되어있다. 권리 ? – lisak

답변

0

그것은 쉽게, 내가 돈 ' t 내가 그냥 프로그래밍 배열을 채운 내가


:-) 그것을 보지 않았다 무슨 생각을 알고 ScheduledExecutorTask [] ScheduledExecutorFactoryBean의 다음 작업의 수천, 증분 지연 속성과 실행 가능한 다른 각.과 나는 방금 fa를 사용했다. ctorybean ... 스프링 녀석들로부터 실제로 유용한 factorybean ...

관련 문제