다른 상태의 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로이 시나리오를 설정하는 방법을 생각할 수 없습니다.
여기에서 도와주세요. 당신은
편집 감사합니다 : 단축 버전은 다음과 같습니다. 이초 간격 (다른 상태) 스레드의 다른 인스턴스 "수백 실행됩니다 설치 작업 스케줄러에 어떻게
나는 여러 개의 ScheduledExecutorTasks를 가진 각각의 MethodInvokingRunnable을 가진 여러 ScheduledExecutorFactoryBean을 설치하기 위해 AnnotationConfigApplicationContext를 사용할 수 있다고 생각했다. ... 나는 괜찮은 소리를 낸다. – lisak
What ' 내가해야 할 일은, 각각 다른 프록시와 타겟을 가진 http get 요청을 나타내는 쓰레드를 스케줄링하는 것입니다. 몇 초 후에 시작합니다. 수천 개가 있습니다. 연결은 최대 30 초까지 지속되므로 동시 처리가 필요합니다. – lisak
이제 제가 그 일을 생각해보십시오. 스케줄러는 제가하고 싶은 일을 절대적으로 생각하지 않습니다. 그들은 하나의 불변 태스크/Runnable을 스케쥴링하기로되어있다. 권리 ? – lisak