springboot定时任务@schedule 执行固定次数
时间: 2023-07-06 14:34:27 浏览: 354
@Scheduled 注解本身并没有提供执行固定次数的功能,但是我们可以通过在任务中增加一个计数器来实现该需求。
例如,我们可以定义一个计数器变量,每次任务执行时计数器加一,当计数器达到指定次数后,我们可以通过调用 ScheduledFuture 的 cancel 方法来取消定时任务的执行。
下面是一个示例代码,演示如何在 Spring Boot 应用程序中实现执行固定次数的定时任务:
```
@Component
public class MyScheduledTask {
private int count = 0;
private ScheduledFuture<?> scheduledFuture;
@Autowired
private ThreadPoolTaskScheduler taskScheduler;
@PostConstruct
public void init() {
scheduledFuture = taskScheduler.schedule(this::runTask, new CronTrigger("0/5 * * * * ?"));
}
private void runTask() {
count++;
System.out.println("Scheduled task is running... Count: " + count);
if (count >= 10) {
scheduledFuture.cancel(false);
}
}
}
```
在上面的代码中,我们定义了一个 count 变量来记录任务执行的次数,并在任务执行时将其加一。当 count 达到 10 后,我们通过调用 ScheduledFuture 的 cancel 方法来取消任务的执行。在 init 方法中,我们使用 ThreadPoolTaskScheduler 来创建定时任务,并指定任务的执行时间为每隔 5 秒执行一次。
阅读全文