springboot使用定時(shí)器

使用定時(shí)器

  1. 開啟定時(shí)任務(wù)功能
@SpringBootApplication
@EnableScheduling
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
  1. 配置定時(shí)任務(wù)
@Component
public class Task {
    private int count=0;
    @Scheduled(cron="*/6 * * * * ?")
    private void process() {
        System.out.println("this is scheduler task runing  "+(count++));
    }
}

任務(wù)執(zhí)行規(guī)則

@Scheduled注解:

@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(Schedules.class)
public @interface Scheduled {

    /**
     * A cron-like expression, extending the usual UN*X definition to include
     * triggers on the second as well as minute, hour, day of month, month
     * and day of week.  e.g. {@code "0 * * * * MON-FRI"} means once per minute on
     * weekdays (at the top of the minute - the 0th second).
     * @return an expression that can be parsed to a cron schedule
     * @see org.springframework.scheduling.support.CronSequenceGenerator
     */
    String cron() default "";

    /**
     * A time zone for which the cron expression will be resolved. By default, this
     * attribute is the empty String (i.e. the server's local time zone will be used).
     * @return a zone id accepted by {@link java.util.TimeZone#getTimeZone(String)},
     * or an empty String to indicate the server's default time zone
     * @since 4.0
     * @see org.springframework.scheduling.support.CronTrigger#CronTrigger(String, java.util.TimeZone)
     * @see java.util.TimeZone
     */
    String zone() default "";

    /**
     * Execute the annotated method with a fixed period in milliseconds between the
     * end of the last invocation and the start of the next.
     * @return the delay in milliseconds
     */
    long fixedDelay() default -1;

    /**
     * Execute the annotated method with a fixed period in milliseconds between the
     * end of the last invocation and the start of the next.
     * @return the delay in milliseconds as a String value, e.g. a placeholder
     * @since 3.2.2
     */
    String fixedDelayString() default "";

    /**
     * Execute the annotated method with a fixed period in milliseconds between
     * invocations.
     * @return the period in milliseconds
     */
    long fixedRate() default -1;

    /**
     * Execute the annotated method with a fixed period in milliseconds between
     * invocations.
     * @return the period in milliseconds as a String value, e.g. a placeholder
     * @since 3.2.2
     */
    String fixedRateString() default "";

    /**
     * Number of milliseconds to delay before the first execution of a
     * {@link #fixedRate()} or {@link #fixedDelay()} task.
     * @return the initial delay in milliseconds
     * @since 3.2
     */
    long initialDelay() default -1;

    /**
     * Number of milliseconds to delay before the first execution of a
     * {@link #fixedRate()} or {@link #fixedDelay()} task.
     * @return the initial delay in milliseconds as a String value, e.g. a placeholder
     * @since 3.2.2
     */
    String initialDelayString() default "";

}
  • cron:指定cron表達(dá)式
  • zone:默認(rèn)使用服務(wù)器默認(rèn)時(shí)區(qū)芥映∮匙可以設(shè)置為java.util.TimeZone中的zoneId
  • fixedDelay:從上一個(gè)任務(wù)完成開始到下一個(gè)任務(wù)開始的間隔畅形,單位毫秒
  • fixedDelayString:同上阅懦,時(shí)間值是String類型
  • fixedRate:從上一個(gè)任務(wù)開始到下一個(gè)任務(wù)開始的間隔斜纪,單位毫秒
  • fixedRateString:同上搔弄,時(shí)間值是String類型
  • initialDelay:任務(wù)首次執(zhí)行延遲的時(shí)間幅虑,單位毫秒
  • initialDelayString:同上,時(shí)間值是String類型

cron表達(dá)式

Cron表達(dá)式是一個(gè)字符串顾犹,字符串以5或6個(gè)空格隔開倒庵,分為6或7個(gè)域,每一個(gè)域代表一個(gè)含義炫刷,Cron有如下兩種語法格式:

  • Seconds Minutes Hours DayofMonth Month DayofWeek Year
  • Seconds Minutes Hours DayofMonth Month DayofWeek

可以填充的值:

  • Seconds: 可出現(xiàn), - * /四個(gè)字符擎宝,有效范圍為0-59的整數(shù)
  • Minutes: 可出現(xiàn), - * /四個(gè)字符,有效范圍為0-59的整數(shù)
  • Hours: 可出現(xiàn), - * /四個(gè)字符浑玛,有效范圍為0-23的整數(shù)
  • DayofMonth: 可出現(xiàn), - * / ? L W C八個(gè)字符绍申,有效范圍為0-31的整數(shù)
  • Month: 可出現(xiàn), - * /四個(gè)字符,有效范圍為1-12的整數(shù)或JAN-DEC
  • DayofWeek: 可出現(xiàn), - * / ? L C #四個(gè)字符顾彰,有效范圍為1-7的整數(shù)或SUN-SAT兩個(gè)范圍极阅。1表示星期天,2表示星期一涨享, 依次類推
  • Year: 可出現(xiàn), - * /四個(gè)字符筋搏,有效范圍為1970-2099年

符號(hào)代表的意義:

  • *:表示匹配該域的任意值,假如在Minutes域使用*, 即表示每分鐘都會(huì)觸發(fā)事件厕隧。
  • ?:只能用在DayofMonth和DayofWeek兩個(gè)域奔脐。它也匹配域的任意值俄周,但實(shí)際不會(huì)。因?yàn)镈ayofMonth和 DayofWeek會(huì)相互影響髓迎。例如想在每月的20日觸發(fā)調(diào)度峦朗,不管20日到底是星期幾,則只能使用如下寫法: 13 13 15 20 ?, 其中最后一位只能用竖般?甚垦,而不能使用,如果使用*表示不管星期幾都會(huì)觸發(fā)涣雕,實(shí)際上并不是這樣艰亮。
  • -:表示范圍,例如在Minutes域使用5-20挣郭,表示從5分到20分鐘每分鐘觸發(fā)一次迄埃。
  • /:表示起始時(shí)間開始觸發(fā),然后每隔固定時(shí)間觸發(fā)一次兑障,例如在Minutes域使用5/20,則意味著5分鐘觸發(fā)一次侄非,而25,45等分別觸發(fā)一次流译。
    ,:表示列出枚舉值值逞怨。例如:在Minutes域使用5,20,則意味著在5和20分每分鐘觸發(fā)一次福澡。
  • L:表示最后叠赦,只能出現(xiàn)在DayofWeek和DayofMonth域,如果在DayofWeek域使用5L,意味著在最后的一個(gè)星期四觸發(fā)革砸。
  • W:表示有效工作日(周一到周五),只能出現(xiàn)在DayofMonth域除秀,系統(tǒng)將在離指定日期的最近的有效工作日觸發(fā)事件。例如:在 DayofMonth使用5W算利,如果5日是星期六册踩,則將在最近的工作日:星期五,即4日觸發(fā)效拭。如果5日是星期天暂吉,則在6日(周一)觸發(fā);如果5日在星期一 到星期五中的一天缎患,則就在5日觸發(fā)借笙。另外一點(diǎn),W的最近尋找不會(huì)跨過月份较锡。
  • LW:這兩個(gè)字符可以連用业稼,表示在某個(gè)月最后一個(gè)工作日,即最后一個(gè)星期五蚂蕴。
  • #:用于確定每個(gè)月第幾個(gè)星期幾低散,只能出現(xiàn)在DayofMonth域俯邓。例如在4#2,表示某月的第二個(gè)星期三熔号。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末稽鞭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子引镊,更是在濱河造成了極大的恐慌朦蕴,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弟头,死亡現(xiàn)場(chǎng)離奇詭異吩抓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)赴恨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門疹娶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人伦连,你說我怎么就攤上這事雨饺。” “怎么了惑淳?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵额港,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我歧焦,道長(zhǎng)锹安,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任倚舀,我火速辦了婚禮,結(jié)果婚禮上忍宋,老公的妹妹穿的比我還像新娘痕貌。我一直安慰自己,他們只是感情好糠排,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布舵稠。 她就那樣靜靜地躺著,像睡著了一般入宦。 火紅的嫁衣襯著肌膚如雪哺徊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天乾闰,我揣著相機(jī)與錄音落追,去河邊找鬼。 笑死涯肩,一個(gè)胖子當(dāng)著我的面吹牛轿钠,可吹牛的內(nèi)容都是我干的巢钓。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼疗垛,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼症汹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起贷腕,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤背镇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后泽裳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瞒斩,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年诡壁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了济瓢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡妹卿,死狀恐怖旺矾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情夺克,我是刑警寧澤箕宙,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站铺纽,受9級(jí)特大地震影響柬帕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜狡门,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一陷寝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧其馏,春花似錦凤跑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至褐奥,卻和暖如春咖耘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背撬码。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工儿倒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人呜笑。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓义桂,卻偏偏與公主長(zhǎng)得像找筝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子慷吊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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