`
单一色调
  • 浏览: 83889 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

JAVA定时器的指定特定时间运行

阅读更多

指定程序在每天凌晨2点运行:

1.初始化定时器

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(){
			@Override
			public void run() {
				logger.info("每天0点开始执行取数");
				GetWid();		//需要运行的方法
			}
		}, date, 1000*60*60*24);
	}

 2. 构建修改日期的方法

 

/**
	 * 如果当前重启服务或者执行任务超过了设定的时间,程序会立即运行,需要在当前日期+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();
	}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics