JAVA单机版程序,如何指定在每天凌晨0:00:00执行?

来源:百度知道 编辑:UC知道 时间:2024/05/22 20:01:16
只能用Timer类吗?这个类好像不太灵活啊,特别是考虑到程序有可能重启呢?Timer的schedule是可以指定在某一个日期的某个时刻运行,但是一旦重新启动该程序后,如果重启的时间在设定的日期与时刻之后,程序就会立即执行,就不能是每天的固定的某一时刻运行了。不知我的理解是否正确

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class HandleTimerTask implements ServletContextListener {

private Timer timer = null; //定时器
private static int DOWNlOAD_HOUR = 0; //执行任务开始时间(时)
private static int DOWNlOAD_MINUTE = 0; //执行任务开始时间(分)
private static int DOWNlOAD_SECOND = 0; //执行任务开始时间(秒)
private long delay; //延时时间值(当前系统时间到下载时间之间的时间差毫秒数)

public void contextInitialized(ServletContextEvent event) {
init();//初始化参数
timer = new Timer(true);//创建Timer对象
//定时执行程序
timer.schedule(new Handle(event.getServletContext()),delay,24*60*60*1000);//调用Handle()类(即每天要执行的任务),delay表示延迟毫秒数,0,24*60*60*1000表示每隔一天执行一次任务,60*60*1000表示一个小时;
}

public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
}