我想知道安排代码的最佳方法。我有一个代码可以生成报告并以24小时为间隔向一组人发送邮件。它是基于控制台的Java应用程序。我想知道安排这个最好的方法。有时我可能需要将其更改为12小时。但是,该应用程序在间隔之间不执行任何其他任务。以24小时为间隔计划
2
A
回答
5
这里有一些方法,从最简单到最全面:
sleep()
:TimeUnit.HOURS.sleep(24)
这种做法很简单,做的工作和睡眠24小时。事实上,这样会更复杂一些,因为报告需要一些时间,所以你不得不稍微休息一下。以下所有解决方案都透明地处
java.util.Timer#scheduleAtFixedRate()
- 简单的内置Java解决方案。@Scheduled
spring或@Schedule
的注释ejb - 更复杂但更强大,例如,接受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();
0
我使用的方法有两种:
首先对于像客户端代码的非托管代码: Chron4J
二是在JavaEE的framewoks implmented。当您使用像Glassfish/JBoss这样的容器时,您可以通过注释方法使用它。会是这样的:
@Schedule(second="*/1", minute="*",hour="*", persistent=false)
public void doWork(){
System.out.println("timer: " + helloService.sayHello());
}
0
我会看看石英调度器,如果我是你。 我在很多应用程序中使用,它非常易于使用。 你可以在这里找到更多的信息:http://quartz-scheduler.org/
如果您使用的弹簧组我肯定会推荐它,因为它是超级容易用XML配置,让春天注入所有的东西给你。
0
那么,如果程序可以idl Ë尝试这样的事情
try
{
for (;;) {
//code
Thread.sleep(1000 * 60 * 60 * 24);
//code
}
}
catch(Exception e)
{
System.out.println(e);
}
相关问题
- 1. System.Timers.Timer设置为24小时间隔
- 2. Android - 24小时工作时间间隔
- 3. C#定时器间隔每24小时
- 4. 24小时间隔语句问题MySQL
- 5. 将NSTimeInterval划分为24小时
- 6. 小组由24小时和星期 - 时间间隔
- 7. 如何在水晶报告中计算大于24小时的时间间隔
- 8. 的时间表示24小时以上
- 9. 以24小时格式显示时间
- 10. jqplot时间24小时以上
- 11. 以特定时间间隔(包括秒)计划任务
- 12. 使用时间跨度在24小时内添加间隔
- 13. 确定24小时日期时间是否在间隔内
- 14. 24小时时间格式
- 15. 24小时时间下拉
- 16. 24小时制时间轴
- 17. 以半个小时为间隔计算电话号码
- 18. 2100小时+1分钟作为计时器。时间间隔
- 19. 24小时时间格式(所以没有AM到PM)为fullCalendar
- 20. Moment.js 24小时时间格式,处理第24小时
- 21. 24小时时间表 - 时间差
- 22. 时间大于24小时之间的PHP计算差值
- 23. 比较时间24小时区间
- 24. 将12小时系统时间转换为24小时并以Java显示
- 25. 将12小时时间格式转换为24小时整数?
- 26. MySQL的:有24小时的间隔加入
- 27. 将伪24小时时钟时间转换为12小时时钟时间
- 28. 在SQL Server中将时间转换为24小时时间
- 29. Angularjs按时间排序的时间为24小时
- 30. 将时间字符串转换为24小时时间仅作为时间
你使用什么系统? – kaupov 2012-03-08 13:02:36
应该是系统独立的。可能是Linux或Windows。 – 2012-03-08 13:03:10