hutool 线程用法_hutool-cron模块的使用

记录下定时任务的模块的使用,还算比较实用,做个分享。

Hutool-cron使用文档

1.介绍

Hutool的定时任务模块与Linux的Crontab使用上非常类似,通过一个cron.setting配置文件,简单调用start()方法即可简单使用。

同时还提供了秒匹配和年匹配等Quartz才有的功能,定时任务表达式上也同时兼容Crontab(Cron4j)和Quartz的表达式,

在调用定时任务的时候是通过反射的方式进行调用的。

2.配置使用

配置文件cron.setting

#------------------------------------------------------------------

# 定时任务配置文件

# 定时任务表达分为以下几种情况:

# 1. 表达式为5位,此时兼容Linux的Crontab模式,第一位匹配分,此时如果为秒匹配模式,则秒部分为固定值(取决于加入表达式时当前时间秒数)

# 2. 表达式为6位,此时兼容Quartz模式,第一位匹配秒,但是只有秒匹配模式时秒部分定义才有效

# 3. 表达式为7位,此时兼容Quartz模式,第一位匹配秒,最后一位匹配年

#------------------------------------------------------------------

# cn.hutool.cron.demo.TestJob.doTest = */1 * * * * *

[cn.hutool.cron.demo]

# 6位表达式在秒匹配模式下可用,此处表示每秒执行一次

# TestJob.doTest = */1 * * * * *

# 5位表达式在分匹配模式下可用,此处表示每分钟执行一次

# 如果此时为秒匹配模式,则秒部分为固定数字(此秒取决于加入表达式当前时间的秒数)

#TestJob.doTest = 0/5 * * * * ?

TestJob2.doTest = */5 * * * * *

说明:配置文件的位置可以放在src/main/resources/config下,也可以放在src/main/resources/下。配置文件中可以写全类名.方法名后面跟crontab的表达式,也可以在[]括号里写包名称,下面写类名称.方法名。

调度的调用

CronUtil.setMatchSecond(true);//匹配秒的部分

CronUtil.start(false);//参数为false表示,主线程一直不退出,如果退出了,就无法执行调度任务了

如果设置为true或者不设置,由于主线程走完会立刻关闭。需要自己设置睡眠然后关闭定时任务。

CronUtil.setMatchSecond(true);

CronUtil.start(true);

ThreadUtil.sleep(300000);

CronUtil.stop();

3.动态的定时任务

动态添加定时任务就不用写配置文件了,可以直接在代码中创建定时任务,当然如果此时已经对配置文件做了配置,又动态创建了定时任务,此时执行启动的时候,配置的定时任务和动态创建的定时任务都会执行。

CronUtil.schedule("*/2 * * * * *", new Task() {

@Override

public void execute() {

Console.log("Task excuted.");

}

});

// 支持秒级别定时任务

CronUtil.setMatchSecond(true);

CronUtil.start(false);

4.任务的添加和移除

CronUtil.setMatchSecond(true);

CronUtil.start(false);

// */5 * * * * * cn.hutool.cron.demo.TestJob2.doTest

/**

* 配置文件里配置了该定时任务,该方法会清除掉所有的定时任务。

*/

CronUtil.getScheduler().clear();

// 重新动态加入该定时任务

String id = CronUtil.schedule("*/2 * * * * *",

(Runnable) () -> Console.log("task running : "+ DateUtil.now()));

ThreadUtil.sleep(30000);

// 移除上一个定时任务

CronUtil.remove(id);

Console.log("Task Removed");

// 继续加入新的定时任务

CronUtil.schedule("*/3 * * * * *",

(Runnable) () -> Console.log("New task add running : "+DateUtil.now()));

Console.log("New Task added.");

/**

* 最后就剩下了最后一个定时任务

*/

5.自定义配置文件

默认只识别这两个路径的配置文件:

/** Crontab配置文件 */

public static final String CRONTAB_CONFIG_PATH = "config/cron.setting";

public static final String CRONTAB_CONFIG_PATH2 = "cron.setting";

我们可以自己定义配置文件,将cron.setting重命名为cron_auto.setting,用该代码调用即可:

CronUtil.setCronSetting(new Setting("config/cron_auto.setting"));

CronUtil.setMatchSecond(true);

CronUtil.start(false);

来源:秦皇岛SEO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值