Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to cancel Spring timer execution

I need to cancel Spring timer execution or at least change the execution frequency based on some conditions. Was using both org.springframework.scheduling.quartz.SimpleTriggerBean and org.springframework.scheduling.timer.ScheduledTimerTask. Cannot find the way how to do it.

like image 279
BigWonder Avatar asked Dec 13 '12 20:12

BigWonder


1 Answers

NOTE: This is for Spring 3.0+

  1. Read Spring documentation on scheduling tasks

  2. Use a TaskScheduler service, such as a TimerManagerTaskScheduler or ThreadPoolTaskScheduler.

  3. Schedule your task by calling some TaskScheduler.schedule*() method and store the returning ScheduledFuture.

  4. When you want to cancel execution, invoke ScheduledFuture.cancel(). That will stop further invocations of your task. At this time, you can reschedule if you want by calling TaskScheduler.schedule*() for your task with different parameters.

like image 90
gpeche Avatar answered Nov 14 '22 07:11

gpeche