cron表达式是我用过迄今为止最好用的定时器表达方式,比较的灵活,可以支持多种多样的灵活的定时器。

先看最简单的用法:

如果业务比较复杂的话我们还可以进行更深一层次的封装。

我们可以添加多条任务

还可以使用stop函数来停止我们的定时器

除此之外还有一种job的方式,不过我认为这种方式用起来不是很直观,不推荐使用


除了cron表达式它还有一种自己特定的写法

不过还是有一些需要注意的点,这个库的cron表达式和网上一些常规的cron表达式有点不同






可以看到网上一些在线生成的表达式是有7位的

我尝试把它放进去

执行结果报错了:






查看了官方文档发现他缺少了年份这一位 所以这里不能使用常规的在线生成器生成的cron表达式去操作


还有一点就是它不支持删除正在挂起的定时器任务


于是我做了一个改装


如此一来我就可以通过map的key值传入来执行stop函数来停止掉指定的cron定时器任务

但是这么写其实还是有风险的,当我们的程序异步竞争map时可能出现map为空的错误

所以我们在改造一下

但是这就意味着我们每个cron只能添加一个addfunc或者addjob

后面有时间会尝试一下把源码拿来二次改装