java 定时任务 @Scheduled

本文介绍了Java中使用@Scheduled注解进行定时任务的实现,并详细解析了cron表达式的字段说明和特殊字符。通过示例展示了在Spring Boot应用中配置和使用@Scheduled的方法。同时提到了Quartz、TimerTask等其他定时任务框架,以及推荐了一个cron表达式生成网站。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cron 表达式

字段说明

序号字段允许值允许的特殊字符是否必填
10-59, - * /Y
20-59, - * /Y
3小时0-23, - * /Y
4日期1-31, - * ? / L W CY
5月份1-12, - * /Y
6星期1-7, - * ? / L C #Y
71970-2099, - * /N

特殊字符说明

特殊字符说明实例
,枚举具体值星期:MON,WED,FRI
-表示范围小时:10-12
*任意值小时:* 表示每小时
/指定增量秒:5/30, 从第5秒开始,每增加30秒执行一次
?日期或星期栏中,两个字段会冲突,表示非明确的值0 0 12 ? * WED 每周三12点
L一个月中最后几天或一个星期中最后几天日期:3L 最后第3天,星期:6L,最后一个星期5
W最近的工作日日期:15W,15日的最近工作日。LW月最后一天最近的工作日
C依靠指定日历暂不明确其用途
#那周的周几6#3,第3周的周5,4#5: 第5周的周3

demo

实例说明
0 15 10 ? * 6L 2002-20052002年至2005年每月的最后一个星期5上午10:15触发
0 15 10 ? * 6#3每月的第三个星期五上午10:15触发

spring-boot 中应用

@SpringBootApplication
@EnableScheduling
public class DemoApplication {
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
}

@Component
public class OrderTimeOutCancelTask {
    /**
     * cron表达式:Seconds Minutes Hours DayofMonth Month DayofWeek [Year]
     * 每10分钟扫描一次
     */
    @Scheduled(cron = "0 0/10 * ? * ?")
    private void cancelTimeOutOrder(){
    }

	//启动后,每 1000ms 执行一次
	@Scheduled(fixedRate = 1000)
	public void fixedRateSch() { 
	}
	
	// 启动后,延时 3000ms 后执行第一次,之后每一次在前一次执行完后 1000ms 再执行
   @Scheduled(fixedDelay = 1000, initialDelay = 3000)
   public void fixedDelaySch() {
   }
}

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值