Quartz入門(一) --初步

Quartz入門(一)

下載與安裝

下載jar包脖捻,將lib包放入classpath中

概述

Quartz對任務調(diào)度的領域問題進行了高度的抽象,提出了調(diào)度器任務觸發(fā)器這3個核心的概念床未,并在org.quartz通過接口和類對重要的這些核心概念進行描述

  • 調(diào)度器:調(diào)度器用于將與作業(yè)觸發(fā)器關聯(lián),一個作業(yè)可關聯(lián)多個觸發(fā)器,這樣每個觸發(fā)器被可以觸發(fā)的作業(yè)執(zhí)行;一個觸發(fā)器可用于控制多個作業(yè),觸發(fā)觸發(fā)時振坚,
    全部作業(yè)將獲得調(diào)度薇搁。Quartz的調(diào)度器由Scheduler接口體現(xiàn).
  • 作業(yè):只需實現(xiàn)org.quartz.job接口即可。Job接口包含一個方法execute(),execute()方法體是被調(diào)度的作業(yè)體渡八。一旦實現(xiàn)Job接口和execute()方法啃洋,
    Quartz確定作業(yè)運作的時候传货,它將調(diào)用execute()方法體。
  • 觸發(fā)器:有SimpleTrigger和CronTrigger兩種類型
quartz

一個簡單的例子

新建一個叫MyJob的類宏娄,實現(xiàn)Job接口

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

import java.util.Calendar;

/**
 * Created by mi on 2017/5/2.
 */
public class MyJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("任務正在執(zhí)行问裕,執(zhí)行時間: " + Calendar.getInstance().getTime());
    }
}

新建一個叫QuartzTest的類

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import java.util.Date;

/**
 * Created by CiCi on 2017/5/2.
 */
public class QuartzTest {
    public static void main(String[] args) throws Throwable {
        SchedulerFactory factory = new StdSchedulerFactory();
        // 從工廠里面拿到一個scheduler實例
        Scheduler scheduler = factory.getScheduler();
        // 計算任務的開始時間,DateBuilder.evenMinuteDate方法是取下一個整數(shù)分鐘
        Date runTime = DateBuilder.evenMinuteDate(new Date());
        // 真正執(zhí)行的任務并不是Job接口的實例孵坚,而是用反射的方式實例化的一個JobDetail實例
        JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build();
        // 定義一個觸發(fā)器粮宛,startAt方法定義了任務應當開始的時間
        Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build();
        // 將任務和Trigger放入scheduler
        scheduler.scheduleJob(job, trigger);
        scheduler.start();
        try {
            // 等待65秒,保證下一個整數(shù)分鐘出現(xiàn)卖宠,這里注意巍杈,如果主線程停止,任務是不會執(zhí)行的
            Thread.sleep(65L * 1000L);
        } catch (Exception e) {

        }
        // scheduler結(jié)束
        scheduler.shutdown(true);
    }
}

通過代碼可以看到幾個重要的類:

  • JobDetail:真正的任務內(nèi)容逗堵,任務本身是繼承Job接口的秉氧,但是真正的任務是JobBuilder通過反射的方式實例化的
    JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job","group1").build()

  • Trigger:觸發(fā)器,定義任務應當開始的時間蜒秤,主要分為兩類SimpleTrigger,CronTrigger亚斋。當前例子是簡單觸發(fā)器作媚,CronTrigger主要用于處理quartz表達式定義的任務,比如每個月20號帅刊,每個星期一之類的纸泡。
    // 定義一個觸發(fā)器,startAt方法定義了任務應當開始的時間 Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build();

  • Scheduler:調(diào)度器赖瞒,現(xiàn)在我們有了要做的內(nèi)容女揭,有了做任務的時間,接下來栏饮,就把這兩個內(nèi)容填充到計劃任務Scheduler對象里面吧兔,到了時間它就可以自動運行啦。
    scheduler.scheduleJob(job, trigger); scheduler.start();

注意事項

  • Quartz一般是通過日志打印的方式來執(zhí)行任務的袍嬉,所以一定要有日志配置境蔼。博主是將log4j.properties文件加入到classpath下。博主一開始認為我自己沒有日志輸出就可以不配置伺通,就一直報錯啊

  • 引入包的時候箍土,只引入lib就可以了,多引了可能是存在重復或者版本不一的問題罐监,增增減減鼓搗了好久也沒有搞出來吴藻,最后重新建了一個文件,只引入lib就可以啦弓柱。

參考文獻

官方文檔
Quartz的搭建沟堡,應用
Quartz任務調(diào)度快速入門
Quartz2之入門實例
Quartz使用-入門使用(java定時任務實現(xiàn))
Quartz開源的作業(yè)調(diào)度框架

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侧但,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子弦叶,更是在濱河造成了極大的恐慌俊犯,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伤哺,死亡現(xiàn)場離奇詭異燕侠,居然都是意外死亡,警方通過查閱死者的電腦和手機立莉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門绢彤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蜓耻,你說我怎么就攤上這事茫舶。” “怎么了刹淌?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵饶氏,是天一觀的道長。 經(jīng)常有香客問我有勾,道長疹启,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任蔼卡,我火速辦了婚禮喊崖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雇逞。我一直安慰自己荤懂,他們只是感情好,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布塘砸。 她就那樣靜靜地躺著节仿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谣蠢。 梳的紋絲不亂的頭發(fā)上粟耻,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機與錄音眉踱,去河邊找鬼挤忙。 笑死,一個胖子當著我的面吹牛谈喳,可吹牛的內(nèi)容都是我干的册烈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赏僧!你這毒婦竟也來了大猛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤淀零,失蹤者是張志新(化名)和其女友劉穎挽绩,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驾中,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡唉堪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了肩民。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唠亚。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖持痰,靈堂內(nèi)的尸體忽然破棺而出灶搜,到底是詐尸還是另有隱情,我是刑警寧澤工窍,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布割卖,位于F島的核電站,受9級特大地震影響患雏,放射性物質(zhì)發(fā)生泄漏究珊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一纵苛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧言津,春花似錦攻人、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至初婆,卻和暖如春蓬坡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背磅叛。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工屑咳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人弊琴。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓兆龙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親敲董。 傳聞我的和親對象是個殘疾皇子紫皇,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容