在java开发中,cron表达式概念

在 Java 开发中,cron 表达式 (Cron Expression)是一种时间规则字符串 ,用来定义"什么时候执行任务 "。

它最初来自 Unix 的 cron 定时器,后来被 Spring、Quartz、ScheduledThreadPoolExecutor 等 Java 调度框架直接借用,成为事实标准。


1. 格式(6 或 7 段,空格分隔)

含义 取值范围 允许的特殊符
1 秒(Spring/Quartz 支持) 0--59 , - * /
2 0--59 , - * /
3 0--23 , - * /
4 1--31 , - * / L W C
5 1--12 或 JAN--DEC , - * /
6 星期 0--7(0 和 7 都是周日)或 SUN--SAT , - * / L # C
7 年(可选,Quartz 支持) 1970--2099 , - * /

Spring 的 @Scheduled 默认6 段秒 分 时 日 月 星期

Linux 原生 crontab 只有5 段分 时 日 月 星期


2. 常用示例(Spring 6 段)

表达式 含义
0 0 2 * * * 每天凌晨 2 点
0 30 9 * * MON-FRI 工作日早上 9:30
0 */10 * * * * 每 10 秒一次
0 0 0 1 * * 每月 1 号零点
0 0 22 * * 1-5 周一到周五晚上 10 点
0 0 8 L * * 每月最后一天上午 8 点
0 0 8 * * 1#1 每月第一个周一上午 8 点

3. 在 Java 中的使用场景

  1. Spring 原生

    复制代码
    @Scheduled(cron = "0 15 10 * * *")
    public void report() { ... }
  2. Quartz

    复制代码
    CronScheduleBuilder.cronSchedule("0 30 9 ? * MON-FRI")
  3. 验证/解析工具

    • org.springframework.scheduling.support.CronExpression(Spring 5.3+)
    • org.quartz.CronExpression

4. 快速记忆口诀

秒 分 时 日 月 星期

从左到右,空格分隔;
* 表示"每",, 列举,- 区间,/ 步长;
L 最后,# 第几,W 工作日。


5. 在线生成/验证工具


一句话总结:
cron 表达式就是 Java 世界里描述"什么时候跑任务"的"时间正则"------写对 6 段,任务按时跑。

相关推荐
暴躁小师兄数据学院2 小时前
【AI大数据工程师特训笔记】第05讲:关联查询
数据库·sql·oracle
云泽8082 小时前
C++ 可调用对象通关指南:深度解析 Lambda 表达式、function 包装器与 bind 绑定器
开发语言·c++·算法
倔强的石头_2 小时前
《Kingbase护城河》——跨平台环境下的数据库联调实战
数据库
lzhdim2 小时前
SQL 入门 17:MySQL 数据类型:从字符串到 JSON 的全面解析
数据库·sql·mysql·json
逍遥德2 小时前
MQTT教程详解-04.SpringBoot集成MQTT(告别手动控制)
java·spring boot·物联网·中间件·iot·iotdb
杨云龙UP2 小时前
Oracle RAC / ODA 生产环境指定 PDB 启动 SOP
linux·运维·数据库·oracle
语戚2 小时前
力扣 3161. 块放置查询:线段树解法(Java 实现)
java·算法·leetcode·面试·线段树·力扣·
kingwebo'sZone3 小时前
在Cent上安装Mysql 8.0的遇到的问题和解决办法
数据库·mysql·adb
幽络源小助理3 小时前
最新知识付费系统网站源码 PC+H5双端 附安装教程 – 幽络源源码网
大数据·数据库
我命由我123453 小时前
Android 开发问题:MlKitException: An internal error occurred during initialization.
android·java·java-ee·android jetpack·android-studio·androidx·android runtime