1. 程式人生 > >定時器Timer的六種方法

定時器Timer的六種方法

使用Timer進行定時任務的時候,我們可以根據實際的要求使用不同的定時任務呼叫方法,下面我直接在程式碼中體現具體六種方法的實際呼叫。

package com.sinosoft.test.Timer;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class Timers {
public static void main(String[] args) throws Exception {
System.out.println(new Date().getTime()+"-------開始定時任務--------");
timer1();
timer2();
timer3();
timer4();
timer5();
timer6();
}

// 第一種方法:指定任務task在指定時間time執行

//schedule(TimerTask task, Date time)
public static void timer1() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 00); // 控制時
calendar.set(Calendar.MINUTE, 00); // 控制分
calendar.set(Calendar.SECOND, 0); // 控制秒
Date time = calendar.getTime(); // 得出執行任務的時間,此處為今天的00:00:00

    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        public void run() {
            System.out.println(new Date().getTime()+"-------定時任務1--------");
        }
    }, time);
}

// 第二種方法:指定任務task在指定延遲delay後執行

//schedule(TimerTask task, long delay)
public static void timer2() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println(new Date().getTime()+"-------定時任務2--------");
}
}, 2000);// 指定延遲2000毫秒後執行
}

// 第三種方法:指定任務task在指定時間firstTime執行後,進行重複固定延遲頻率peroid的執行

// schedule(TimerTask task, Date firstTime,long period)
public static void timer3() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 00); // 控制時
calendar.set(Calendar.MINUTE, 00); // 控制分
calendar.set(Calendar.SECOND, 0); // 控制秒
Date time = calendar.getTime(); // 得出執行任務的時間,此處為今天的00:00:00

    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        public void run() {
            System.out.println(new Date().getTime()+"-------定時任務3--------");
        }
    }, time, 1000 * 60 * 60 * 24);
}

// 第四種方法:指定任務task 在指定延遲delay 後,進行重複固定延遲頻率peroid的執行

// schedule(TimerTask task, long delay, long period)
public static void timer4() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println(new Date().getTime()+"-------定時任務4--------");
}
}, 1000, 5000);
}

// 第五種方法:指定任務task在指定時間firstTime執行後,進行重複固定延遲頻率peroid的執行

// scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
public static void timer5() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 00); // 控制時
calendar.set(Calendar.MINUTE, 00); // 控制分
calendar.set(Calendar.SECOND, 0); // 控制秒
Date time = calendar.getTime(); // 得出執行任務的時間,此處為今天的00:00:00

    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
            System.out.println(new Date().getTime()+"-------定時任務5--------");
        }
    }, time, 1000 * 60 * 60 * 24);
}

// 第六種方法:指定任務task 在指定延遲delay 後,進行重複固定延遲頻率peroid的執行

// scheduleAtFixedRate(TimerTask task, long delay, long period)
public static void timer6() {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
System.out.println(new Date().getTime()+"-------定時任務6--------");
}
}, 1000, 2000);
}
}