Ho la seguente configurazione task scheduler:Perché il programma di pianificazione delle operazioni a molla attende il completamento dell'attività precedente?
<bean id="Task" class="foo.bar.Task" />
<bean id="TaskScheduler"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler">
<property name="waitForTasksToCompleteOnShutdown" value="true" />
<property name="poolSize" value="1000" />
</bean>
<task:scheduled-tasks scheduler="TaskScheduler">
<task:scheduled ref="Task" method="run" cron="*/5 * * * * *" />
</task:scheduled-tasks>
La task si limita a stampare una linea e dorme per 10 secondi. Con questa configurazione, la mia aspettativa era che l'attività fosse eseguita ogni 5 secondi, indipendentemente dal fatto che l'attività precedente avesse terminato la sua esecuzione (cioè smesso di dormire). Ma non è questo il caso, l'attività viene eseguita una volta ogni 15 secondi (il tempo di sonno e poi la volta successiva che il cron viene colpito).
Come posso configurarlo in modo che l'attività venga eseguita ogni 5 secondi indipendentemente dal fatto che l'esecuzione precedente sia terminata?
Grazie per la risposta. _ @ Async_ funziona. TimerFactoryBean è deprecato, quindi non voglio usarlo. Di regola mi piace tenere il codice sorgente/annotazioni fuori dal mio codice. C'è un modo per fare l'equivalente di _ @ Async_ tramite la configurazione? – GuerillaNerd
Sì, ho aggiunto alcune configurazioni e possibili classi java. – Suranga