一个程序需要每隔一小时执行一次,于是我让其每次执行后就休眠一小时,但是现在的问题是,休眠一小时后,该程序并不能一定就能保证被唤醒,请问这种问题应该如何解决,谢谢。

解决方案 »

  1.   

    在线程的run方法中加sleep(3600000) //挂起一个小时,保证能被唤醒的
      

  2.   

    在线程的run方法中加sleep(3600000)   //我是用的这种方法,但在实际情况下确实有没有按时唤醒的时候,最严重的有晚了1个小时的,
    to believefym:请问如何使用定时器,谢谢。
      

  3.   

    定时器是在程序一直运行,设置间隔时间可以让程序没隔一段间隔时间执行一次任务,例如
    import javax.swing.Timer;
    import java.awt.event.*;
    import javax.swing.*;public class Counter {
    static int i = 0; public static void main(String args[]) {
    Timer timer = new Timer(1000, new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    System.out.println(i++);
    }
    }); timer.start(); JOptionPane.showMessageDialog(null, "exit");
    timer.stop();
    }}
      

  4.   

    sleep(3600000) 这是在执行了你的代码后再挂起一个小时的,是这个意思。如果你的代码执行了二十分钟,那么加起来就是一个小时二十分钟。所以不是想像中的一个小时。用timer也是如些。timer也是用的sleep。
      

  5.   

    严格的说, sleep(3600000) 是隔一个小时执行, 而不是每一个小时执行.用Timer或自己写都是很简单的
      

  6.   

    用sleep(3600000),唯一能保证的事情是,它会休眠至少1小时,但是它恢复运行所花的时间可能更长,因为在休眠结束之后,线程调度机制还要花时间来接管。
      

  7.   

    同意楼上,sleep(3600000)是不能保证准时起来,用timer吧