程序与系统时间比较后无限期执行

时间:2014-07-25 07:27:14

标签: java

解释 - 正在从表中提取StartTime(EX- 2014-07-25 12:00:00)

Startwork()执行插入功能

do {
    long time = startTime.getTime() + (((59 * 60) + 59) * 1000);
    Date endTime = new Date(time);
    System.out.println("INFO:   Calling startWork(" + startTime + "," + endTime + ")");
    startWork(startTime, endTime);
    startTime = new Date(startTime.getTime() + (60 * 60 * 1000));
    systemHour = new Date(new Date().getYear(), new Date().getMonth(), new Date().getDate(), new Date().getHours(), 0, 0);
    String stringToUpdateLastProcessedTime = "update meter_thread set last_processed_time='" + sdf.format(startTime) + "' where name='Gateway Park Occupancy' ";
    mysqlStatement.executeUpdate(stringToUpdateLastProcessedTime);
}
while (startTime.getTime() != systemHour.getTime());
System.out.println("INFO:   Switching to live mode");
Thread.sleep(1000 * 55 * 60);

我遇到的问题是,如果从表中获取的启动时间是(ex -2014-07-25 12:00:00)并且当前系统时间是(ex-),则程序将在未来的日期执行2014-07-25 12:20:00)而不是切换到实时模式。

请帮助我出错的地方。

1 个答案:

答案 0 :(得分:1)

我会改变:

while(startTime.getTime() != systemHour.getTime())

对于

while(startTime.getTime() > systemHour.getTime())

相当不可能(几乎不可能)你的循环检查将与startTime瞬间的毫秒相匹配。