java定时任务

package com.mingan.application.echannel.renewalpolicy.common.util;

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import com.prs.framework.core.context.AppContext;

public class PolicyRemindListener implements ServletContextListener {

	private static final String TASK_BEANNAME = "renewalAutoPolicyRemindTask";
	/*
	 * 时间间隔
	 */
	//private final long PERIOD_DAY = 24 * 60 * 60 * 1000;
	
	/*
	 * 测试环境间间隔
	 */
	private final long PERIOD_DAY =   20 * 1000;

	/*
	 * 任务开始执行时间
	 */
	private Date stateExecuteDate;

	public PolicyRemindListener() {
		Calendar calendar = Calendar.getInstance();
		/*** 定制每日12:00执行方法 ***/
		calendar.set(Calendar.HOUR_OF_DAY, 0);
		calendar.set(Calendar.MINUTE, 0);
		calendar.set(Calendar.SECOND, 0);
		// 第一次执行定时任务的时间
		stateExecuteDate = calendar.getTime();
		// 如果第一次执行定时任务的时间 小于 当前的时间
		// 此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
		if (stateExecuteDate.before(new Date())) {
			stateExecuteDate = this.addDay(stateExecuteDate, 1);
		}
	}

	/**
	 * 在指定时间上加上指定的天数
	 * @param date
	 * @param num
	 * @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();
	}

	public void contextDestroyed(ServletContextEvent arg0) {
		// 服务器终止时执行的方法
	}

	public void contextInitialized(ServletContextEvent context) {
	}
}

你可能感兴趣的:(java)