我有一个循环,需要一个小时才能完成。 在循环中我插入和更新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