Calendar針對於相隔一段時間自動執行的簡單應用

首先有一個extends TimerTask的方法


import java.util.Date;
import java.util.TimerTask;

/**  
 * 類說明   
 *  
 * @author nmj
 * @email  [email protected]
 * @date 2017年5月17日  新建  
 */
public class extendsTimerTask extends TimerTask{

    /***
     * 執行的線程
     */
    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println(new Date()+"成功。");
    }

}

寫TimerManager類來定時執行上面的extendsTimerTask


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

import com.sun.jmx.snmp.tasks.Task;

public class TimerManager {

    private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;

    //num爲幾點執行
    public TimerManager(int num) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, num);// 早8點
        calendar.set(Calendar.MINUTE, 00);
        calendar.set(Calendar.SECOND, 00);
        Date date = calendar.getTime();// 第一次執行的時間
        // 如果第一次設定日期,小於當前時間,就在此時加一天,如果不加,會自動執行。
        // if (date.before(new Date())) {
        // date = this.addDay(date, 1);
        // }
        Timer timer = new Timer();
        // 執行繼承extends TimerTask的類
        extendsTimerTask ett = new extendsTimerTask();
        // 相隔執行的時間
        timer.schedule(ett, date, PERIOD_DAY);
    }

    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 static void main(String[] args) {
        //填寫8即爲8點自動執行
        new TimerManager(8);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章