注释部分是每日运行代码,Calendar里填写几点几分运行。
/**
*
* @since 2016-10-25
*/
public class TimeManager extends HttpServlet{ //时间间隔
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; //每日执行任务
private static final long PERIOD_MIN= 60* 60 * 1000; //没小时执行任务
private Timer timer;
public void init(ServletConfig config) throws ServletException {
timer = new Timer(true);
Calendar calendar = Calendar.getInstance();
/*** 定制每日执行方法 ***/
// calendar.set(Calendar.HOUR_OF_DAY, 14);
// calendar.set(Calendar.MINUTE, 0);
// calendar.set(Calendar.SECOND, 0);
Date date=calendar.getTime(); //第一次执行定时任务的时间
//如果第一次执行定时任务的时间 小于 当前的时间
//此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。循环执行的周期则以当前时间为准
// if (date.before(new Date())) {
// date = this.addDay(date, 1);
// }
//启动备份任务 没小时运行
// timer.schedule(new AirRun(),date, PERIOD_DAY); //启动备份任务 没小时运行
timer.schedule(new AirRun(),date, PERIOD_MIN);
}
// 增加或减少天数
public Date addDay(Date date, int num) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, num);
return startDT.getTime();
}
} public class AirRun extends TimerTask{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public void exchange() { try { System.out.println("开始读取数据!!"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); System.out.println("执行方法"); System.out.println("结束读取数据!!"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); } catch (Exception e) { System.out.println("定时器定时信息失败。"); } } @Override public void run() { exchange(); } }