如何编写循环定期执行的任务?

需求是设计一个系统,某一个组件需要定期对数据进行批处理计算,比如每隔2个小时执行一次计算。
应该怎么实现呢?在主程序中写个循环还是设定一个crontab任务由系统间隔性执行程序?
DIEA
浏览 363回答 2
2回答

PIPIONE

推荐用crontab,感觉死循环常驻内存这种事情怎么看怎么感觉很危险…而且crontab配置简单,不用写多余的代码,专注要做的事情。

慕尼黑5688855

晚上考虑了一下。其实并不是说一定要用某种方式,而是要根据实际需求出发来选择最终的方案。crontab是好,但在某些场合不一定适合;主程序中添加定时任务并不一定都是坏的,有时候还真要这么选择。分离or耦合个人经验,绝大部分的定时任务都可以从主应用中分离,比如说统计数据计算、过期数据清理、数据备份、日志监控等等。但是前提是定时任务与主业务逻辑关联不大。如果定时任务和主业务耦合,比如说积分计算,计算规则比较复杂,而且可能随需求变动,若从主业务代码分离,那么规则变动的时候就需要改两份代码,好一点这部分规则做了封装,那么改动之后还要记得主业务和定时流程都要重新部署。如果不用crontab或者类crontab组件,那么也用忙等去做定时任务也是不可取的。可以使用ScheduledExecutorService管理延时任务。同意@公子的。但是用crontab的时候需要注意执行线程能够正常退出。之前就发生过因为执行线程没有退出,资源占满。如果任务执行依赖的组件比较多,在主业务中编写方便的话,也可以考虑使用定时器来作延时任务管理。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript