spring定时器如何停止

avatar
作者
筋斗云
阅读量:4

Spring定时器有两种停止的方式:

  1. 使用@Scheduled注解的方法停止:可以在方法上添加一个参数,类型为ScheduledFuture,然后在需要停止定时器的地方调用ScheduledFuture.cancel()方法即可停止定时器。
@Scheduled(fixedRate = 1000) public void someTask(ScheduledFuture<?> scheduledFuture) { // 业务逻辑 if (需要停止定时器的条件) { scheduledFuture.cancel(); } } 
  1. 使用TaskScheduler的接口方法停止:通过注入TaskScheduler实例,调用TaskScheduler.schedule()方法返回的ScheduledFuture对象的cancel()方法即可停止定时器。
@Autowired private TaskScheduler taskScheduler; public void startTask() { ScheduledFuture<?> scheduledFuture = taskScheduler.schedule(new Runnable() { @Override public void run() { // 业务逻辑 } }, new CronTrigger("*/5 * * * * *")); // 定时表达式 // 业务逻辑 if (需要停止定时器的条件) { scheduledFuture.cancel(); } } 

需要注意的是,停止定时器时需要保留定时任务的ScheduledFuture对象,以便在需要停止定时器的地方调用cancel()方法。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!