我想知道安排代码的最佳方法.我有一个代码可以生成报告并以24小时的间隔向一组人发送邮件.它是基于控制台的java应用程序.我想知道安排它的最佳方法.有时我可能需要将其更改为12小时间隔.但是,应用程序不会在间隔之间执行任何其他任务.
解决方法:
这里有一些方法,从最简单到最全面:
> sleep():
TimeUnit.HOURS.sleep(24)
这种方法很简单,做工和睡24小时.实际上它有点复杂,因为报告生成需要一些时间,所以你必须稍微睡一会儿.以下所有解决方案都透明地处理.
> java.util.Timer#scheduleAtFixedRate() – 简单的内置Java解决方案.
> spring中的@Scheduled注释或ejb中的@Schedule – 更复杂但更强大,例如接受cron表达式:
@Scheduled(fixedRate=DateUtils.MILLIS_PER_DAY)
public void generateReport() {
//...
}
> quartz-scheduler – 完整的Java调度程序,具有群集和故障转移,失火处理,完整的cron支持等.非常全面:
newTrigger().
withSchedule(
simpleSchedule().
withIntervalInHours(24).
repeatForever()
).build();
要么
newTrigger().
withSchedule(
cronSchedule().
dailyAtHourAndMinute(17, 30). //17:30
).build();
标签:java,multithreading,spring,ejb,cron,quartz-scheduler,cron
来源: https://codeday.me/bug/20190902/1790546.html