定时任务的时间规则

http://www.docjar.com/docs/api/org/quartz/CronTrigger.html
 

注:‘*’ 表示"每一分钟"的含义,‘?’ 可以用在“日”和“周几”字段,

 

"0 0 12 * * ?" 每天中午12点(中午)


"0 15 10 ? * *" 每天上午十点十五分


"0 15 10 * * ?" 每天上午十点十五分


"0 15 10 * * ? *" 每天上午十点十五分


"0 15 10 * * ? 2005" 2005年每天上午十点十五分


"0 * 14 * * ?" 每天下午2点开始,每天下午2点59分结束


"0 0/5 14 * * ?" 每天下午2点开始,每天下午2点55分结束,每5分钟开始一次


"0 0/5 14,18 * * ?" 从下午2点开始到下午2点55分,每5分钟开始一次,每6分钟从6点开始到6点55分结束,每天


"0 0-5 14 * * ?" 每天下午2点开始,每天下午2点05分结束


"0 10,44 14 ? 3 WED" 在三月份的每个星期三下午2点10分和下午2点44分开始。


"0 15 10 ? * MON-FRI" 每周一,周二,周三,周四和周五上午10点15分开始


"0 15 10 15 * ?" 每个月的15号上午10点15分开始


"0 15 10 L * ?" 在每个月的最后一天上午10点15分开始


"0 15 10 ? * 6L" 每个月最后一个星期五上午10点15分开始


"0 15 10 ? * 6L 2002-2005"  2002年,2003年,2004年和2005年每个月的最后一个星期五上午10点15分开始


"0 15 10 ? * 6#3" 每个月的第三个星期五上午10点15分开始

在 Java 中,定时任务时间规则设置主要依赖于使用的工具和框架。以下是几种常见方法及其时间规则的设定方式: ### 使用 `Timer` 和 `TimerTask` `Timer` 是 Java 提自带的定时任务类,其时间规则通过 `schedule` 方法的参数进行设置。可以设置任务的首次执行延迟以及执行间隔。例如: ```java Timer timer = new Timer(); TimerTask timerTask = new TimerTask() { @Override public void run() { System.out.println("打印当前时间:" + new Date()); } }; // 延迟1000毫秒执行,每3000毫秒执行一次 timer.schedule(timerTask, 1000, 3000); ``` 此方法适合简单的时间间隔规则,但不支持复杂的调度需求[^2]。 ### 使用 `ScheduledExecutorService` `ScheduledExecutorService` 是比 `Timer` 更强大的定时任务调度器,支持单次任务和周期性任务。其时间规则通过 `scheduleAtFixedRate` 或 `scheduleWithFixedDelay` 方法定义: ```java ScheduledExecutorService executor = Executors.newScheduledThreadPool(2); executor.scheduleAtFixedRate(() -> System.out.println("任务执行"), 1, 3, TimeUnit.SECONDS); ``` - `scheduleAtFixedRate`:以固定频率执行任务。 - `scheduleWithFixedDelay`:以固定延迟执行任务。 此方法支持多线程环境,避免了 `Timer` 的单线程问题[^3]。 ### 使用 Spring 的 `@Scheduled` 注解 Spring 提供了基于注解的定时任务支持,允许通过 Cron 表达式定义复杂的时间规则。例如: ```java @Scheduled(cron = "0 0/5 * * * ?") // 每5分钟执行一次 public void scheduledTask() { System.out.println("定时任务执行"); } ``` Cron 表达式格式如下: ``` 秒 分 时 日 月 星期 年(可选) ``` 例如: - `"0 0 12 * * ?"`:每天中午12点执行。 - `"0 15 10 ? * MON-FRI"`:每个工作日的10:15执行。 ### 使用分布式定时任务框架(如 XXL-JOB) 在分布式环境下,为避免任务重复执行,需结合分布式锁或使用专用框架。XXL-JOB 支持通过 Cron 表达式定义任务的执行时间规则,并提供 Web 管理界面进行任务调度配置。其时间规则设置与 Spring 的 `@Scheduled` 类似,但适用于分布式场景[^3]。 ### 时间规则设置注意事项 1. **避免资源耗尽**:在生产环境中,需合理配置线程池大小,并监控任务执行状态。 2. **异常处理**:确保任务代码具有良好的异常处理机制,避免因异常导致任务终止。 3. **任务持久化**:在分布式系统中,考虑任务的持久化和恢复机制,确保任务不会因节点故障而丢失。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值