使用HutoolUtil之全局定时任务CronUtil工具类实现动态定时任务,很好很强大!

举报
小米粒-biubiubiu 发表于 2020/12/11 23:09:43 2020/12/11
【摘要】 全局定时任务-CronUtil   介绍 CronUtil通过一个全局的定时任务配置文件,实现统一的定时任务调度。 使用 1、配置文件 对于Maven项目,首先在src/main/resources/config下放入cron.setting文件(默认是这个路径的这个文件),然后在文件中放入定时规则,规则如下: # 我是注释[com.company.aaa.jo...

全局定时任务-CronUtil

 

介绍

CronUtil通过一个全局的定时任务配置文件,实现统一的定时任务调度。

使用

1、配置文件

对于Maven项目,首先在src/main/resources/config下放入cron.setting文件(默认是这个路径的这个文件),然后在文件中放入定时规则,规则如下:


  
  1. # 我是注释
  2. [com.company.aaa.job]
  3. TestJob.run = */10 * * * *
  4. TestJob2.run = */10 * * * *

中括号表示分组,也表示需要执行的类或对象方法所在包的名字,这种写法有利于区分不同业务的定时任务。

TestJob.run表示需要执行的类名和方法名(通过反射调用,不支持Spring和任何框架的依赖注入),*/10 * * * *表示定时任务表达式,此处表示每10分钟执行一次,以上配置等同于:


  
  1. com.company.aaa.job.TestJob.run = */10 * * * *
  2. com.company.aaa.job.TestJob2.run = */10 * * * *

提示 关于表达式语法,见:http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

2、启动

CronUtil.start();

 

如果想让执行的作业同定时任务线程同时结束,可以将定时任务设为守护线程,需要注意的是,此模式下会在调用stop时立即结束所有作业线程,请确保你的作业可以被中断:


  
  1. //使用deamon模式,
  2. CronUtil.start(true);

3、关闭

CronUtil.stop();

 

更多选项

秒匹配和年匹配

考虑到Quartz表达式的兼容性,且存在对于秒级别精度匹配的需求,Hutool可以通过设置使用秒匹配模式来兼容。


  
  1. //支持秒级别定时任务
  2. CronUtil.setMatchSecond(true);

此时Hutool可以兼容Quartz表达式(5位表达式、6位表达式都兼容)

动态添加定时任务

当然,如果你想动态的添加定时任务,使用CronUtil.schedule(String schedulingPattern, Runnable task)方法即可(使用此方法加入的定时任务不会被写入到配置文件)。


  
  1. CronUtil.schedule("*/2 * * * * *", new Task() {
  2. @Override
  3. public void execute() {
  4. Console.log("Task excuted.");
  5. }
  6. });
  7. // 支持秒级别定时任务
  8. CronUtil.setMatchSecond(true);
  9. CronUtil.start();

文章来源: blog.csdn.net,作者:血煞风雨城2018,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_31905135/article/details/111032376

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。