请教关于Quartz/crontab/Timer定时执行任务的准确性
项目中需要用到定时任务,并且对时间准确性要求比较高。
所谓的时间准确性是:例如我在00:00:30第一次启动了这个定时任务,任务本身执行时间大概5~120秒钟左右,并且我设置这个任务的执行频率是5分钟。
但是使用java.util.Timer的话,跑上十几天后,任务的触发时间可能变成了00:01:27执行了。。。
而且我发现使用linux/unix系统下的crontab调度的时候,也会出现类似的情况,quartz的还没测试过。
有人遇到过类似的问题吗?大家是怎么解决的呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
写个脚本定时与国际标准时间同步,就不会出现太大的误差了。
写个sh,crontab设定每月1号凌晨00:05之前执行一次,sh执行前先检测有没原先那个进程在跑,没的话,就跑一次。原先的sh也做个检测,不要两个一起跑。
你那个5分是java定时器里面设定的间隔时间?
本身java这个时间就不是绝对精确的,5分偏差一点,时间一长,自然变这样。
量变引起质变。
每次也就5分上下一点点的时间,对于你的5分就那么重要?
linux里的crontab用*/5,我还没发现有偏差那么厉害的。
你那个5分是java定时器里面设定的间隔时间?
本身java这个时间就不是绝对精确的,5分偏差一点,时间一长,自然变这样。
量变引起质变。
每次也就5分上下一点点的时间,对于你的5分就那么重要?
linux里的crontab用*/5,我还没发现有偏差那么厉害的。
顶一下,有人有类似经验吗?