package com.lxht.test;

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

public class TestTimer {
    public static void main(String[] args) {
        Timer timer = new Timer(); //创建一个新的时间调度器
        Date t = Calendar.getInstance().getTime();
        System.out.println(new Date());
        t.setTime(System.currentTimeMillis() - 20000); //设置运行时间从当前时间往前推20秒
        long period = 5000;  //设置调度周期为5秒执行一次
     timer.schedule(new MyTask(),t); //开始执行任务,只执行一次
       timer.schedule(new MyTask(), t,period); //开始执行任务,每5秒执行一次
       
       /*
        * 开始执行任务,每5秒执行一次,但把之前漏过的时间点重新执行一遍
        * 如往前推20秒,每5秒执行一次,则会比schedule()多执行4次(20/5)
       */        
      timer.scheduleAtFixedRate(new MyTask(),t,period);  
    }
}

class MyTask extends TimerTask {    
     public MyTask() {    
     }    
     @Override    
     public void run() {        
        System.out.println(new Date()+ ";running....");    
     }
}