gpt4 book ai didi

java - Spring Boot @Scheduled 是同步还是异步?

转载 作者:行者123 更新时间:2023-12-02 01:35:54 25 4
gpt4 key购买 nike

在我们的项目中,我们使用 Spring Boot 2.1.3.Release,对于调度程序作业,我们在方法级别使用 @Scheduled。

@Scheduled(fixedRate = 1000)
public void fixedRateSchedule() {
System.out.println(
"Fixed rate task - " + System.currentTimeMillis() / 1000);
}

固定速率不会等待上一个任务完成。

@Scheduled(fixedDelay = 1000)
public void fixedDelaySchedule() {
System.out.println(
"Fixed delay task - " + System.currentTimeMillis() / 1000);
}

fixedDelay,任务总是等待,直到前一个任务完成。

@Scheduled(cron = "0 0/5 * * * ?")
public void fixedDelaySchedule() {
System.out.println(
"cron task - " + System.currentTimeMillis() / 1000);
}

上面的 cron 将每五分钟执行一次,我的问题是:@scheduled cron 是否会等待上一个任务完成后再触发下一个作业?

最佳答案

@Scheduled 方法是异步执行的,但默认情况下 Spring Boot 使用大小为 1 的线程池,因此每个方法将一次执行一个。

要更改此设置,请将以下内容添加到 Spring Boot 配置中:

@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(5);
return taskScheduler;
}

这是 ThreadPoolTaskScheduler 源代码的链接.

关于java - Spring Boot @Scheduled 是同步还是异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55280332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com