相关文章推荐
@Scheduled(fixedRate = 5000) // 任务每隔 5 秒执行一次
@Scheduled(fixDelay= 5000)	// 任务每隔 5 秒执行一次(上一次任务结束5秒后, 再执行下一次任务)

或者可以使用 cron 表达式来完成更复杂的定时要求.

2. 使用yml或properties配置值来控制任务执行的间隔时间

可以使用此方法传递配置值:

 @Scheduled(fixedDelayString = "${test.delay}")

其中 test.delay为yml或properties配置值中的自定义配置值

3. @Schedule参数 fixedRate 与 fixedDelay 的区别

简单来说: fixedRate 任务两次执行时间间隔是任务的开始点,而 fixedDelay 的间隔是前次任务的结束与下次任务的开始。
1. 对于 fixRate , 当任务时长超过 fixedRate 时,会在上次任务执行完后立即启动下一轮。除非这个 Job 方法用 @Async 注解了,使得任务不在 TaskScheduler 线程池中执行,而是每次创建新线程来执行。
2. 对于 fixDelay , 其总是前一次任务完成后,延时固定长度然后执行一次任务

2. 其他

如果要持续执行一个耗时操作的定时任务, 那么推荐使用 fixDelay=1 , 让每个定时任务之间的结束和开始间隔 1ms

如果使用 fixRate=1, 那么这个任务的耗时操作会导致后面的任务会一直被阻塞, 当任务阻塞过多时, 可能会出现不可预见的操作, 所以使用fixDelay=1, 这样对性能的影响比较小, 且比较稳妥

参考:
理解Spring定时任务的fixedRate和fixedDelay

可以使用此方法传递配置值: @Scheduled(fixedDelayString = “${test.delay}“)其中 test.delay为yml或properties配置值中的自定义配置值@Schedule参数 fixedRate 与 fixedDelay 的区别简单来说: fixedRate 任务两次执行时间间隔是任务的开始点,而 fixedDelay 的间隔是前次任务的结束与下次任务的开始。1. 对于 fixRate , 当任务时长超过 fixedRate 时,会在上次任务执行完后 schedule: #服务器为0时区,因此设置每天下午16点执行,相当于东8区的晚上12点 crons: {"verifierSettingsResetDayDataTask":"0 0 16 * * ?","guideUserSchedule":"0/20 * * * * ?"} # 默认是115 min: 20 编写调用器 package app.woya.service.admin.config.scheduled; impor
@Component @PropertySource(value = "classpath:jobTask.properties",encoding = "UTF-8") public class InactiveAccountJob { @Scheduled(cron = "${inactiveaccountCron}") public void syncInactiveAccount() { resources/jobTask.properties inactiv.
Spring框架中,`spring.profiles.active`是一个属性,用于指定当前应用程序所处的活动配置文件。通过设置`spring.profiles.active`属性,可以选择性地加载不同的配置文件,从而实现应用程序在不同环境下的灵活配置。 `spring.profiles.active`属性可以通过多种方式进行设置,以下是几种常见的方式: 1. 在application.properties或application.yml文件中直接设置属性spring.profiles.active=dev 这样就会激活名为"dev"的配置文件。 2. 在启动命令中使用`-D`参数设置系统属性: java -jar myapp.jar -Dspring.profiles.active=prod 这样就会激活名为"prod"的配置文件。 3. 在Spring Boot的配置类中使用`@Profile`注解: ```java @Configuration @Profile("test") public class TestConfig { // 配置内容 这样就会在激活名为"test"的配置文件时加载TestConfig类中的配置内容。 需要注意的是,`spring.profiles.active`属性可以同时指定多个配置文件,多个配置文件之间使用逗号分隔。例如: spring.profiles.active=dev,db 这样就会同时激活名为"dev"和"db"的配置文件。
 
推荐文章