要在每天9:30和16.30两个时间定时启动程序,应该怎么用Timer定时器来实现?

解决方案 »

  1.   

    有系统时间的方法吧
    运行方法时间不等则sleep
    如此循环
      

  2.   

    那就是说不用Timer类,直接在循环里面判断当前的系统时间?
    如果用Timer类如何实现呢?有对应的方法吗?
      

  3.   

    看以下jdk里应该能找到吧,
    有一个timetask什么的
      

  4.   

    最简单的方法就启动一个线程,一直在判断系统时间,如果是执行任务的时间就做出响应的操作,要不是就sleep一会,非常简单的!
      

  5.   

    这种情况一般用1个TimerTask控制loading当天的任务.这个TimerTask基本上每天24小时运行一次.只要保证在9点之前运行就可以了
    final Timer timer=new Timer(false);
    timer.schedual(new TimerTask()
                   { public void run()
                           {  Calendar now=Calendar.getInstance();  //获得当前时间
                              Calendar next1=Calendar.getInstance();  
                              Calendar next2=Calendar.getInstance(); 
                              next1.set(Calendar.HOUR_OF_DAY,9);//设置钟头9点
                              next1.set(Calendar.MINUTE,30);//设置分钟为30 
                              next2.set(Calendar.HOUR_OF_DAY,16);
                              next2.set(Calendar.MINUTE,30);
                              timer.schedual(new TimerTask()
                                     {
                                           public void run()
                                           {//你9点半要作的事情}
                                      },(next1.getTimeInMillis()-now.getTimeInMillis()));
    //计算现在距离9点半还有多少时间.
                             timer.schedual(new TimerTask()
                                     {
                                           public void run()
                                           {//你16点半要作的事情}
                                      },(next2.getTimeInMillis()-now.getTimeInMillis()));
                                }  
                             },0,24*60*60*1000);24小时运行一次
      

  6.   

    Timer是间隔多少时间运行一次,楼主的需求可能要用到timertask,就是程序启动一段时间后运行timertask的任务,这个时间可以根据当前时间跟目标时间的差获得
      

  7.   

    import java.awt.event.*;
    import java.util.*;public class Task implements ActionListener {
       javax.swing.Timer time;
       public Task() {
          //初始化定时器,每分钟响应一次
          time = new javax.swing.Timer(1000*6, this);
          time.start();
       }   public void actionPerformed(ActionEvent arg0) {
          Calendar rightNow = Calendar.getInstance();
          if(rightNow.get(Calendar.HOUR_OF_DAY) == 9 ||
             rightNow.get(Calendar.HOUR_OF_DAY) == 16)
          {
              if(Calendar.getInstance().get(Calendar.MINUTE) == 30)
                //9:30或16:30执行任务计划
                do_task();       }
           return;
       }
       public void do_task() {
         System.out.println("begin ");
         //调用计划要运行的程序v
         try{
         //Runtime.getRuntime().exec("***.exe");
        }catch(Exception e){}
       }
       public static void main(String[] args) {
         Task a = new Task();
         //死循环让程序不断执行
         while(true);
       }
    }
      

  8.   

    有那么复杂吗?
    调度一个计时器任务,使其在特定的时间执行,下面举个10秒后执行的.
         int numberOfMillsecondsInTheFuture=1000;
         Date timeToRun=new Date(System.currentTimeMillis()+numberOfMillsecondsInTheFuture);
         Timer timer=new Timer();
         timer.schedule(new TimerTask(){
                       public void run(){
                            //这里执行任务
                       }                               },timeToRun);