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