国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Quartz學習之常用Trigger方法記錄

vibiu / 2562人閱讀

摘要:分類中共包含有種觸發器。建立一個觸發器,每隔一分鐘,每天上午點至下午點之間建立一個觸發器,將在每天上午執行第一種實現方式第二種實現方式建立一個觸發器,將在星期三上午在系統默認值之外執行第一種方式第二種方式

Trigger分類

Quartz中共包含有4種觸發器。

常用的是: SimpleTriggerCronTrigger
不常用的是:CalendarIntervalTriggerDailyTimeIntervalTrigger。雖然后面兩種用到的不是特別多,但是在特定的場景下,也是有不可替代的作用(具體看下官方文檔)。

CalendarIntervalTrigger: 根據一個給定的日歷時間進行重復,可以設置啟動時間。它可以完成 SimpleTrigger(比如每個月,因為月不是一個確定的秒數)和CronTrigger(比如5個月,因為5個月并不是12個月的公約數)不能完成的一些任務。注意,使用month作為周期單位時,如果起始日期是在某月的最后一天,比如1月31日,那么下一個激活日在2月28日,以后所有的激活日都在當月的28日。如果你要嚴格限制在每月的最后一天激活,那你需要使用cronTrigger。不受夏令時引起的時鐘偏移影響。

DailyTimeIntervalTrigger:在給定的時間窗口或指定的星期以秒、分鐘、小時為周期進行重復。比如,每天早上8:00到11:00之間,每隔72分鐘激活;或者每周的周一到周五9:20到16:47之間,每隔23分鐘激活。

SimpleTrigger 常用的方法記錄

SimpleTrigger的屬性包括:開始時間、結束時間、重復次數以及重復的間隔。

重復次數,可以是0、正整數,以及常量SimpleTrigger.REPEAT_INDEFINITELY。重復的間隔,必須是0,或者long型的正數,表示毫秒。注意,如果重復間隔為0,trigger將會以重復次數并發執行(或者以scheduler可以處理的近似并發數)。

指定時間開始觸發,不重復

SimpleTrigger trigger = (SimpleTrigger) newTrigger() 
        .withIdentity("trigger1", "group1")
        .startAt(myStartTime)                     // some Date 
        .forJob("job1", "group1")                 // identify job with name, group strings
        .build();

指定時間觸發,每隔10秒執行一次,重復10次

trigger = newTrigger()
        .withIdentity("trigger3", "group1")
        .startAt(myTimeToStartFiring)  // if a start time is not given (if this line were omitted), "now" is implied
        .withSchedule(simpleSchedule()
            .withIntervalInSeconds(10)
            .withRepeatCount(10)) // note that 10 repeats will give a total of 11 firings
        .forJob(myJob) // identify job with handle to its JobDetail itself                   
        .build();

立即觸發,每個5分鐘執行一次,直到22:00:

trigger = newTrigger()
        .withIdentity("trigger7", "group1")
        .withSchedule(simpleSchedule()
            .withIntervalInMinutes(5)
            .repeatForever())
        .endAt(dateOf(22, 0, 0))
        .build();

建立一個觸發器,將在下一個小時的整點觸發,然后每2小時重復一次:

trigger = newTrigger()
        .withIdentity("trigger8") // because group is not specified, "trigger8" will be in the default group
        .startAt(evenHourDate(null)) // get the next even-hour (minutes and seconds zero ("00:00"))
        .withSchedule(simpleSchedule()
            .withIntervalInHours(2)
            .repeatForever())
        // note that in this example, "forJob(..)" is not called which is valid 
        // if the trigger is passed to the scheduler along with the job  
        .build();

    scheduler.scheduleJob(trigger, job);

建立一個觸發器,將在下一個小時的整點觸發,然后每2小時重復一次

    trigger = newTrigger()
        .withIdentity("trigger8") // because group is not specified, "trigger8" will be in the default group
        .startAt(evenHourDate(null)) // get the next even-hour (minutes and seconds zero ("00:00"))
        .withSchedule(simpleSchedule()
            .withIntervalInHours(2)
            .repeatForever())
        // note that in this example, "forJob(..)" is not called which is valid 
        // if the trigger is passed to the scheduler along with the job  
        .build();

    scheduler.scheduleJob(trigger, job);
CronTrigger 常用的方法記錄

CronTrigger 通常比 Simple Trigger 更有用,如果需要基于日歷的概念而不是按照 SimpleTrigger 的精確指定間隔進行重新啟動的作業啟動計劃。

使用 CronTrigger ,可以指定號時間表,例如“每周五中午”或“每個工作日和上午9:30”,甚至“每周一至周五上午9:00至10點之間每5分鐘”和1月份的星期五“。

即使如此,和 SimpleTrigger 一樣,CronTrigger 有一個 startTime ,它指定何時生效,以及一個(可選的)endTime,用于指定何時停止計劃。

建立一個觸發器,每隔一分鐘,每天上午8點至下午5點之間

trigger = newTrigger()
    .withIdentity("trigger3", "group1")
    .withSchedule(cronSchedule("0 0/2 8-17 * * ?"))
    .forJob("myJob", "group1")
    .build();

建立一個觸發器,將在每天上午10:42執行

// 第一種實現方式
trigger = newTrigger()
    .withIdentity("trigger3", "group1")
    .withSchedule(dailyAtHourAndMinute(10, 42))
    .forJob(myJobKey)
    .build();
    
// 第二種實現方式
trigger = newTrigger()
    .withIdentity("trigger3", "group1")
    .withSchedule(cronSchedule("0 42 10 * * ?"))
    .forJob(myJobKey)
    .build();

建立一個觸發器,將在星期三上午10:42在TimeZone(系統默認值)之外執行

// 第一種方式
trigger = newTrigger()
    .withIdentity("trigger3", "group1")
    .withSchedule(weeklyOnDayAndHourAndMinute(DateBuilder.WEDNESDAY, 10, 42))
    .forJob(myJobKey)
    .inTimeZone(TimeZone.getTimeZone("America/Los_Angeles"))
    .build();
    
// 第二種方式
  trigger = newTrigger()
    .withIdentity("trigger3", "group1")
    .withSchedule(cronSchedule("0 42 10 ? * WED"))
    .inTimeZone(TimeZone.getTimeZone("America/Los_Angeles"))
    .forJob(myJobKey)
    .build();

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/71209.html

相關文章

  • Quartz習之入門

    摘要:觸發器也可以給予名稱和放置在組中,以方便地將它們調度內組織。作業可以被添加到所述調度器一次,而是具有多個觸發器注冊。調度類鏈接工作和觸發器到一起,并執行它。 簡介 Quartz是一個開源的作業調度框架,可以讓計劃的程序任務一個預定義的日期和時間運行。Quartz可以用來創建簡單或復雜的日程安排執行幾十,幾百,甚至是十萬的作業數。官方鏈接,戳這里 Quartz是什么? 作業調度庫 Qua...

    Pandaaa 評論0 收藏0
  • Quartz習之多作業、監聽

    摘要:多作業例子在這個例子中,我們將介紹如何通過多個作業。在調度框架中,每個作業將被連接到一個唯一的觸發,并且由調度器運行它。備注說明在中,一個觸發器觸發多個作業是不可以的。第一步創建個作業,,和。 多作業例子 在這個例子中,我們將介紹如何通過Quartz API 多個作業。在Quartz調度框架中,每個作業將被連接到一個唯一的觸發,并且由調度器運行它。 備注說明:在 Quartz 中,一個...

    miracledan 評論0 收藏0
  • Quartz習之Cron Expressions表達式

    摘要:請注意,觸發器將不會在上午點開始,僅在,,和請注意,一些調度要求太復雜,無法用單一觸發表示例如每上午至之間每分鐘,下午至晚上點之間每分鐘一次。在這種情況下的解決方案是簡單地創建兩個觸發器,并注冊它們來運行相同的作業。 表達式說明 Cron-Expressions 用于配置 CronTrigger的實例。Cron Expressions 是由七個子表達式組成的字符串,用于描述日程表的各個...

    Mr_zhang 評論0 收藏0
  • 慕課網_《Java定時任務調度工具詳解之Quartz篇》習總結

    摘要:時間年月日星期一說明本文部分內容均來自慕課網。屬性任務名稱任務所屬組任務實現類傳參的作用淺談上是什么當調用一個,就會將傳遞給的方法能通過對象訪問到運行時候的環境以及本身的明細數據。 時間:2017年06月26日星期一說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示例源碼:https://github.com/zccodere/s...個人學習源碼...

    hiYoHoo 評論0 收藏0
  • Quartz實現工作流

    摘要:也有,觸發點和相關,和我們的需求關系不大,暫忽略。實現為每個算法任務創建一個,任務失敗不能啟動后續任務,所以在運行失敗的情況下,需要把啟動的刪除掉。需要自己在中實現多個依賴是否完成的檢查。后續主線程的任務就是檢查工作流是否已經完成。 Quartz簡介 作為一個優秀的開源調度框架,Quartz 具有以下特點:強大的調度功能,支持立即調度、定時調度、周期調度、并發調度; 靈活的應用方式,支...

    Apollo 評論0 收藏0

發表評論

0條評論

vibiu

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<