我想知道安排代碼的最佳方法。我有一個代碼可以生成報告並以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. Android - 24小時工作時間間隔
- 2. 小組由24小時和星期 - 時間間隔
- 3. 將NSTimeInterval劃分爲24小時
- 4. 如何在水晶報告中計算大於24小時的時間間隔
- 5. jqplot時間24小時以上
- 6. 以24小時格式顯示時間
- 7. 使用時間跨度在24小時內添加間隔
- 8. 確定24小時日期時間是否在間隔內
- 9. 24小時制時間軸
- 10. 以半個小時爲間隔計算電話號碼
- 11. 24小時時間格式(所以沒有AM到PM)爲fullCalendar
- 12. Moment.js 24小時時間格式,處理第24小時
- 13. 24小時時間表 - 時間差
- 14. 時間大於24小時之間的PHP計算差值
- 15. 比較時間24小時區間
- 16. 將僞24小時時鐘時間轉換爲12小時時鐘時間
- 17. Angularjs按時間排序的時間爲24小時
- 18. 如何計劃簡單石英譜圖中的時間間隔
- 19. 服務與計劃任務時間間隔
- 20. 的Java:轉換12小時時間至24小時的時間
- 21. 從excel中將12小時時間轉換爲24小時時間
- 22. 如何在PHP中將12小時時間轉換爲24小時制時間?
- 23. 如何將j2me中的12小時時間轉換爲24小時時間?
- 24. 使用Java將24小時時間轉換爲12小時時間
- 25. 在Oracle中將24小時時間轉換爲12小時時間
- 26. GSheets:計算24小時業務中的時間差
- 27. 計劃輪詢間隔選項
- 28. 平均間隔10分鐘的大型不規則間隔時間序列產生24小時配置文件
- 29. 扣除從時間戳24小時
- 30. 檢查時間差在24小時
你使用什麼系統? – kaupov 2012-03-08 13:02:36
應該是系統獨立的。可能是Linux或Windows。 – 2012-03-08 13:03:10