java調(diào)度框架Quartz(二)

上一篇咱們整理學(xué)習(xí)了Java調(diào)度框架Quartz的1+版本耳标,這才咱們看一下Quartz的2+版本和2以下版本的有什么區(qū)別逢勾。無(wú)非就是幾個(gè)步驟,1.創(chuàng)建調(diào)度器粉铐,2.創(chuàng)建作業(yè)任務(wù)疼约,3.創(chuàng)建觸發(fā)器并設(shè)置觸發(fā)器的出發(fā)執(zhí)行規(guī)則,4.開(kāi)始調(diào)度蝙泼。那么Quartz 2版本有什么區(qū)別呢程剥,直接上代碼直接一點(diǎn):
還是那幾步,我就不一一羅列了汤踏。
首先是Job作業(yè)的任務(wù)邏輯:實(shí)現(xiàn)Job interface

package com.traning.quartz.quartz2_1_7;

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

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

/**
 * Created by luyang.li on 17/2/8.
 */
public class QuartzTestJob implements Job {
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "Quartz 2.1.7 Test");
    }
}

具體的任務(wù):

package com.traning.quartz.quartz2_1_7;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;

import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;

/**
 * Created by luyang.li on 17/2/13.
 */
public class QuartzTestApp {
    public static void main(String[] args) throws SchedulerException, InterruptedException {
        //獲取 調(diào)度器
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        //獲取 任務(wù)作業(yè)
        JobDetail jobDetail = newJob(QuartzTestJob.class).withIdentity("groupJobName", "group1").build();
        //獲取 觸發(fā)器
        Trigger trigger = newTrigger().withIdentity("triggerName", "group1").startNow().build();
        //綁定
        scheduler.scheduleJob(jobDetail, trigger);
        scheduler.start();

        Thread.sleep(10);

        scheduler.shutdown();
    }
}

咱們直接執(zhí)行這個(gè)方法就可以看見(jiàn)任務(wù)執(zhí)行了织鲸,為什么要調(diào)用這個(gè)

scheduler.shutdown();

方法呢,應(yīng)為Quartz任務(wù)在執(zhí)行的時(shí)候不會(huì)顯示關(guān)閉任務(wù),就算主線(xiàn)程執(zhí)行完畢了溪胶,任務(wù)還是在執(zhí)行中搂擦,咱們就直接調(diào)用shutdown關(guān)閉。
咱們看一下兩者的區(qū)別就是創(chuàng)建任務(wù)和觸發(fā)器的時(shí)候使用的方式不同了在構(gòu)造作業(yè)和觸發(fā)器的時(shí)候都是構(gòu)造他的 組 和 名哗脖,只是使用了不同的方式瀑踢。來(lái)看一下源碼:

    public Key(String name, String group) {
        if(name == null)
            throw new IllegalArgumentException("Name cannot be null.");
        this.name = name;
        if(group != null)
            this.group = group;
        else
            this.group = DEFAULT_GROUP;
    }

其實(shí)和1+版本的作用都是一樣的,構(gòu)造作業(yè)的時(shí)候是綁定作業(yè)的類(lèi)才避,然后構(gòu)造 組 + 名橱夭,構(gòu)造觸發(fā)器的手也是同樣的構(gòu)造觸發(fā)器的 組 + 名。
大家可以執(zhí)行以下看一下結(jié)果桑逝,我就不貼結(jié)果了棘劣。
下面咱們看一下2+版本的SimpleTrigger的構(gòu)造器的使用:SimpleTrigger上一節(jié)咱們說(shuō)是簡(jiǎn)單的構(gòu)造器執(zhí)行方式
1.和1版本一樣來(lái)看下這個(gè)方法:

 public SimpleScheduleBuilder withIntervalInMinutes(int intervalInMinutes) 

這個(gè)方法就是設(shè)置執(zhí)行的間隔,參數(shù)是一個(gè)int值楞遏,再看下他的源碼:

    public SimpleScheduleBuilder withIntervalInMinutes(int intervalInMinutes) {
        this.interval = intervalInMinutes * DateBuilder.MILLISECONDS_IN_MINUTE;
        return this;
    }

這個(gè)常量是:
  public static final long MILLISECONDS_IN_MINUTE = 60l * 1000l;

我們可以看出來(lái)是單位是分鐘2缦尽J孜簟!好了有執(zhí)行間隔了糙俗,執(zhí)行次數(shù)呢:
還有一個(gè)函數(shù)是設(shè)置執(zhí)行次數(shù):

    public SimpleScheduleBuilder withRepeatCount(int triggerRepeatCount) {
        this.repeatCount = triggerRepeatCount;
        return this;
    }

這個(gè)函數(shù)就是設(shè)置執(zhí)行次數(shù)沙廉。
好了直接看下整體的代碼:

package com.traning.quartz.quartz2_1_7;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;

import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;

/**
 * Created by luyang.li on 17/2/13.
 */
public class QuartzTestApp {
    public static void main(String[] args) throws SchedulerException, InterruptedException {
        //獲取 調(diào)度器
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        //獲取 任務(wù)作業(yè)
        JobDetail jobDetail = newJob(QuartzTestJob.class).withIdentity("groupJobName", "group1").build();
        //獲取 觸發(fā)器  !!!!!!
        Trigger trigger = newTrigger().withSchedule(simpleSchedule()
                .withIntervalInMinutes(1) // 1分鐘
                .withRepeatCount(20))  // 重復(fù)20次
                .startNow()
                .build();

        //綁定
        scheduler.scheduleJob(jobDetail, trigger);
        scheduler.start();

    }
}

這里我把關(guān)閉方法去掉了,因?yàn)槿蝿?wù)要執(zhí)行20次臼节,不然要睡眠等到任務(wù)結(jié)束才可以調(diào)用關(guān)閉撬陵,大家自己執(zhí)行下看看效果。
怎么樣簡(jiǎn)單吧网缝。好了下一節(jié)咱們看下 1+ 版本和 2+版本的CronTrigger的使用巨税。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市粉臊,隨后出現(xiàn)的幾起案子草添,更是在濱河造成了極大的恐慌,老刑警劉巖扼仲,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件远寸,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡屠凶,警方通過(guò)查閱死者的電腦和手機(jī)驰后,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)矗愧,“玉大人灶芝,你說(shuō)我怎么就攤上這事“拢” “怎么了夜涕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)属愤。 經(jīng)常有香客問(wèn)我女器,道長(zhǎng),這世上最難降的妖魔是什么住诸? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任驾胆,我火速辦了婚禮,結(jié)果婚禮上只壳,老公的妹妹穿的比我還像新娘俏拱。我一直安慰自己暑塑,他們只是感情好吼句,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著事格,像睡著了一般惕艳。 火紅的嫁衣襯著肌膚如雪搞隐。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天远搪,我揣著相機(jī)與錄音劣纲,去河邊找鬼。 笑死谁鳍,一個(gè)胖子當(dāng)著我的面吹牛癞季,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播倘潜,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼绷柒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了涮因?” 一聲冷哼從身側(cè)響起废睦,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎养泡,沒(méi)想到半個(gè)月后嗜湃,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澜掩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年购披,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肩榕。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡今瀑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出点把,到底是詐尸還是另有隱情橘荠,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布郎逃,位于F島的核電站哥童,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏褒翰。R本人自食惡果不足惜贮懈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望优训。 院中可真熱鬧朵你,春花似錦、人聲如沸揣非。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)早敬。三九已至忌傻,卻和暖如春大脉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背水孩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工镰矿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俘种。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓秤标,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親宙刘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抛杨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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