项目中用到一个定时器来备份数据。。 假如我设置为11点来执行这个任务当工程重启时,如果现在还没到11点  那么这个任务就不会执行。如果过了11点,那么定个定时器就会执行。现在想让定时器启动不执行,到了规定的时间再执行。
怎么搞  代码如下。
public class TaskManager implements ServletContextListener {    
 /**   
  * 每天的毫秒数   
  */   
 public static final long PERIOD_DAY = 10;    
 /**   
  * 一周内的毫秒数   
  */   
 public static final long PERIOD_WEEK = PERIOD_DAY * 7;    
 /**   
  * 无延迟   
  */   
 public static final long NO_DELAY = 0;    
 /**   
  * 定时器   
  */   
 private Timer timer;    
 /**   
  * 在Web应用启动时初始化任务   
  */   
 public void contextInitialized(ServletContextEvent event) {    
 Calendar calendar = Calendar.getInstance();
  calendar.set(Calendar.HOUR_OF_DAY, 11); //控制时
  calendar.set(Calendar.MINUTE, 45); //控制分
  calendar.set(Calendar.SECOND, 0); //控制秒
  Date date = calendar.getTime();  
  //定义定时器    
  timer = new Timer("数据库表备份",true);     
  //启动备份任务 
  timer.schedule(new BackUpTableTask(), date);
   
 }    
 /**   
  * 在Web应用结束时停止任务   
  */   
 public void contextDestroyed(ServletContextEvent event) {    
  timer.cancel(); // 定时器销毁    
 }    
}  public class BackUpTableTask extends TimerTask {     
    private static Log log = LogFactory.getLog(BackUpTableTask.class);     
    private static boolean isRunning = false;     
   public void run() {     
              if (!isRunning) {     
                          isRunning = true;     
                           log.debug("开始执行任务..."); //开始任务     
                           System.out.println("do work --------------------------");
                           System.out.println("work down;");
//                           try {
// DataSource ds = com.aebiz.pub.util.DBUtil.getDataSource();
// try {
// new AccountCheck(ds).getAccountFile();
// } catch (Exception e) {
// e.printStackTrace();
// }
// } catch (NamingException e) {
// e.printStackTrace();
// }
                           
                              //working  add what you want to do     
                          log.debug("执行任务完成..."); //任务完成     
                          isRunning = false;     
                } else {     
                         log.debug("上一次任务执行还未结束..."); //上一次任务执行还未结束   
                         System.out.println("任务没执行");
                }     
   }     
}   web.xml如下 :<listener>
<listener-class>com.test.dao.impl.TaskManager</listener-class>
</listener> 
现在的问题是 如果 工程重启,没到11点,那么这个定时器不会执行,如果过了11点,那么这个定时器,就会执行现在想让他启动后不执行。