cron表达式是我用过迄今为止最好用的定时器表达方式,比较的灵活,可以支持多种多样的灵活的定时器。
先看最简单的用法:
如果业务比较复杂的话我们还可以进行更深一层次的封装。
我们可以添加多条任务
还可以使用stop函数来停止我们的定时器
除此之外还有一种job的方式,不过我认为这种方式用起来不是很直观,不推荐使用
除了cron表达式它还有一种自己特定的写法
不过还是有一些需要注意的点,这个库的cron表达式和网上一些常规的cron表达式有点不同
可以看到网上一些在线生成的表达式是有7位的
我尝试把它放进去
执行结果报错了:
查看了官方文档发现他缺少了年份这一位 所以这里不能使用常规的在线生成器生成的cron表达式去操作
还有一点就是它不支持删除正在挂起的定时器任务
于是我做了一个改装
如此一来我就可以通过map的key值传入来执行stop函数来停止掉指定的cron定时器任务
但是这么写其实还是有风险的,当我们的程序异步竞争map时可能出现map为空的错误
所以我们在改造一下
但是这就意味着我们每个cron只能添加一个addfunc或者addjob
后面有时间会尝试一下把源码拿来二次改装