JAVA定时器的指定特定时间运行
public void contextInitialized(ServletContextEvent arg0) {//自定义时间执行::::凌晨2点Calendar cal = Calendar.getInstance();cal.set(Calendar.HOUR_OF_DAY, 2);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);Date date = cal.getTime();//第一次执行定时任务的时间 每天早上2点//此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。if(date.before(new Date())){date = this.addDay(date,1);}//0替换成cal.getTime();timer = new Timer();timer.schedule(new TimerTask(){@Overridepublic void run() {logger.info("每天0点开始执行取数");GetWid();//需要运行的方法}}, date, 1000*60*60*24);}
/** * 如果当前重启服务或者执行任务超过了设定的时间,程序会立即运行,需要在当前日期+1 * @param date * @param i * @return */private Date addDay(Date date, int num) {Calendar startDT = Calendar.getInstance();startDT.setTime(date);startDT.add(Calendar.DAY_OF_MONTH, num);return startDT.getTime();}
?