2011-05-03 36 views
0

我有一个循环,需要一个小时才能完成。 在循环中我插入和更新db中的记录,虽然我不认为这是相关的,但以防万一。每20秒钟后记录一些信息,仅限Java 1.4

每20秒左右我想写一个更新到数据库。 所以我想我需要做一些时间检查循环的开始。 这样做的最好方法是什么?

+0

仅限Java 1.4的任何特定原因? 1.6自2006年以来已经出来。 – 2011-05-03 21:42:33

回答

2
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(); 
0

嗯。那么,如果这是你真正想做的事,那么你可以做:

long time = System.currentTimeMillis(); 

for(;;) { 

//doStuff 

if((System.currentTimeMillis() - time) > 20000) { 
    // log message 
    time = System.currentTimeMillis(); 
} 

} 
1

对于计时器问题,我优先使用Quartz框架。我不认为最新版本支持1.4,但可能是早期版本。即使使用cron表达式,您也可以创建作业,触发器。 http://www.quartz-scheduler.org/

+0

+1我们在JDK 1.4项目中使用了Quartz 1.6.1。 – zawhtut 2011-05-04 04:06:57