定時任務調度工具之Timer(一)

定時任務調度工具之Timer(一)

一、什么是定時任務調度

基于給定的時間點,給定的時間間隔或者給定的執(zhí)行次數(shù)自動執(zhí)行的任務

二、Java中的定時調度工具

Timer:

由JDK直接提供,調用方式簡單,不需要jar包支持;
只能完成一些簡單的定時任務;
Timer走后臺線程執(zhí)行定時任務;

Quartz:

是OpenSymphony開源組織的開源項目,需要jar包支持;
時間控制功能遠比Timer強大和完善;
可以使用多個執(zhí)行線程執(zhí)行定時任務;

三、Timer簡介

3.1 Timer定義

有且僅有一個后臺線程對多個業(yè)務線程進行定時定頻率的調度

1.jpg

3.2 主要構件

Timer通過定時調用TimerTask來實現(xiàn)對任務的定時調度的目的。
Timer:可以理解為后臺執(zhí)行的線程
TimerTask:業(yè)務線程
2.jpg

3.3 Timer工具類詳解

3.jpg

TimerThread:對應后臺執(zhí)行的線程
TimerTask:業(yè)務線程(run方法中為業(yè)務邏輯)
TimerThread通過定期地調用隊列TaskQueue中的TimerTask里面的run方法的內容來實現(xiàn)對任務定時定頻率的調用。

四、代碼演示

1.編寫需要定時調度的業(yè)務邏輯類

package com.hcx.timer;

import java.util.TimerTask;

/**
 * Created by HCX on 2017/8/28.
 * 需要定時調度的業(yè)務邏輯類
 */
public class MyTimerTask extends TimerTask{

    private String name;

    public MyTimerTask(String inputName) {
        name = inputName;
    }

    @Override
    public void run() {
        //打印當前name的內容
        System.out.println("Current exec name is:" + name);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2.編寫定時調度類

package com.hcx.timer;

import java.util.Timer;

/**
 * Created by HCX on 2017/8/28.
 * 定時調度類
 */
public class MyTimer {

    public static void main(String[] args){

        //創(chuàng)建一個Timer實例(位于java.util包下的)
        Timer timer = new Timer();
        //創(chuàng)建一個MyTimerTask實例
        MyTimerTask myTimerTask = new MyTimerTask("hcx");
        /**
         * 通過Timer定時定頻率調用MyTimerTask的業(yè)務邏輯
         * 即第一次執(zhí)行是在當前時間的兩秒鐘之后,之后每隔一秒鐘執(zhí)行一次
         */
        timer.schedule(myTimerTask,2000L,1000L);
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容