Java定时周期任务

java设置代码定期执行,不是执行一次就结束,而是按周期重复执行。例如每天的某个时刻,或者每周的某个时刻周期执行。
public void doScheduler(){
    final long PERIOD_DAY = 24 * 60 * 60 * 1000; 
    final long PERIOD_WEEK = 7 * 24 * 60 * 60 * 1000;
    long period = PERIOD_DAY; //间隔时间,默认每天执行
    int add_days = 1;
    Timer timer = new Timer();
    Calendar calendar = Calendar.getInstance();
    if (每周执行) {
        calendar.set(Calendar.DAY_OF_WEEK, 星期几);
        period = PERIOD_WEEK; //每周执行
        add_days = 7;
    }
    calendar.set(Calendar.HOUR_OF_DAY, 小时);
    calendar.set(Calendar.MINUTE, 分钟);
    calendar.set(Calendar.SECOND, 秒);
    Date date = calendar.getTime();//第一次执行定时任务的时间 
    //如果第一次执行定时任务的时间 小于当前的时间
    //此时要在 第一次执行定时任务的时间加add_days天,以便此任务在下个时间点执行。如果不加add_days天,任务会立即执行
    if (date.before(new Date())) {
        date = this.addDay(date, add_days);
    }
    //安排指定的任务在指定的时间开始进行重复的固定延迟执行
    timer.schedule(new TimerTask(){
         public void run(){
             writeDBLog();
         }
    }, date, period);
}
// 增加或减少天数
public Date addDay(Date date, int num) {  
    Calendar startDT = Calendar.getInstance();  
    startDT.setTime(date);  
    startDT.add(Calendar.DAY_OF_MONTH, num);  
    return startDT.getTime();  
}

你可能感兴趣的:(Java代码,定时任务)