我有一個循環,需要一個小時才能完成。 在循環中我插入和更新db中的記錄,雖然我不認爲這是相關的,但以防萬一。每20秒鐘後記錄一些信息,僅限Java 1.4
每20秒左右我想寫一個更新到數據庫。 所以我想我需要做一些時間檢查循環的開始。 這樣做的最好方法是什麼?
我有一個循環,需要一個小時才能完成。 在循環中我插入和更新db中的記錄,雖然我不認爲這是相關的,但以防萬一。每20秒鐘後記錄一些信息,僅限Java 1.4
每20秒左右我想寫一個更新到數據庫。 所以我想我需要做一些時間檢查循環的開始。 這樣做的最好方法是什麼?
final long interval = 20 * 1000;
long lastLogged = System.currentTimeMillis();
while (processing) {
if (System.currentTimeMillis() - lastLogged > interval) {
lastLogged = System.currentTimeMillis();
logToDatabase();
}
// do rest of processing
}
// Optionally:
logToDatabase();
嗯。那麼,如果這是你真正想做的事,那麼你可以做:
long time = System.currentTimeMillis();
for(;;) {
//doStuff
if((System.currentTimeMillis() - time) > 20000) {
// log message
time = System.currentTimeMillis();
}
}
您可以創建一個TimerTask和schedule it用20秒時間。
對於計時器問題,我優先使用Quartz框架。我不認爲最新版本支持1.4,但可能是早期版本。即使使用cron表達式,您也可以創建作業,觸發器。 http://www.quartz-scheduler.org/
+1我們在JDK 1.4項目中使用了Quartz 1.6.1。 – zawhtut 2011-05-04 04:06:57
僅限Java 1.4的任何特定原因? 1.6自2006年以來已經出來。 – 2011-05-03 21:42:33