Java--Timer定時器使用

項目中,一般要使用定時任務的話,大家的第一反應都是Quartz框架,今天發現其實java本身也是可以做定時任務的,雖然功能沒有Quartz強大,但也說明Java的生態完整,功能強大。
1、簡介:
Timer是一種工具,線程用其安排以後在後臺線程中執行的任務。可安排任務執行一次,或者定期重複執行。實際上是個線程,定時調度所擁有的TimerTasks。
TimerTask是一個抽象類,它的子類由 Timer 安排爲一次執行或重複執行的任務。實際上就是一個擁有run方法的類,需要定時執行的代碼放到run方法體內。
2、代碼實現:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

import junit.framework.TestCase;

/**
 * @Description java原生Timer實現定時任務
 */
public class TestTimer extends TestCase{

    private static int count = 1;       // 記錄定時任務執行次數
    private static long delay = 1000L;  // 定時任務延遲執行時間(毫秒)
    private static long period = 5000L; // 定時任務執行時間間隔(毫秒)

    public void testTime() throws InterruptedException{
        Timer timer = new Timer();
        // 創建一個計時器,重寫run方法
        TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {
                String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
                System.out.println("第" + count++ + "次執行定時任務,執行時間:" + date);
            }
        };
        // 1、schedule(TimerTask task, Date time) 安排在指定的時間執行指定的任務
//      Calendar calendar = Calendar.getInstance();
//      calendar.set(Calendar.MINUTE, 26);
//      timer.schedule(timerTask,calendar.getTime());

        // 2、schedule(TimerTask task, Date firstTime, long period) 安排指定的任務在指定的時間開始進行重複的固定延遲執行
//      timer.schedule(timerTask, new Date(), period);

        // 3、schedule(TimerTask task, long delay) 安排在指定延遲後執行指定的任務
//      timer.schedule(timerTask, delay);

        // 4、schedule(TimerTask task, long delay, long period) 安排指定的任務從指定的延遲後開始進行重複的固定延遲執行
        timer.schedule(timerTask, delay, period);

        synchronized (TestTimer.class) {
            try {
                TestTimer.class.wait();
            } catch (Throwable e) {
                System.out.println(e);
            }
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章