色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

從各個維度再次介紹Spring Boot定時任務調度

jf_78858299 ? 來源:SpringBoot ? 作者:林祥纖 ? 2023-04-12 11:01 ? 次閱讀

我們先看下本節的大綱:

(1)定時任務的幾種實現方式;

(2)Spring Task入門;

(3)cronExpression配置說明;

(4)cronExpression實例;

接下來我們看看具體的每個步驟:

(1)定時任務的幾種實現方式;

TimerJava自帶的java.util.Timer類,這個類允許你調度一個java.util.TimerTask任務。使用這種方式可以讓你的程序按照某一個頻度執行,但不能在指定時間運行。一般用的較少。

Quartz :使用Quartz,這是一個功能比較強大的的調度器,可以讓你的程序在指定時間執行,也可以按照某一個頻度執行,配置起來稍顯復雜。

SpringTask :Spring3.0以后自帶的task,可以將它看成一個輕量級的Quartz,而且使用起來比Quartz簡單許多。

(2)SpringTask入門;

再次我們編寫一個簡單的例子學習下定時器的簡單應用:

(a)新建一個spring-boot-task工程;

這個步驟很簡單,不多說。

(b)在pom.xml文件添加依賴,如下:

"http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd" >

4.0.0

com.kfit

spring-boot-task2

0.0.1-SNAPSHOT

jar

spring-boot-task2

http://maven.apache.org

<project.build.sourceEncoding>UTF-8class="hljs-name"project.build.sourceEncoding>

 

1.8class="hljs-name"java.version>
<parent>

   <groupId>org.springframework.boot<span class="hljs-name"groupId>

   <artifactId>spring-boot-starter-parent<span class="hljs-name"artifactId>

   <version>1.4.1.RELEASE<span class="hljs-name"version>

<span class="hljs-name"parent>
<dependency>

  <groupId>junit<span class="hljs-name"groupId>

  <artifactId>junit<span class="hljs-name"artifactId>

  <scope>test<span class="hljs-name"scope>

<span class="hljs-name"dependency>



    

   <dependency>

       <groupId>org.springframework.boot<span class="hljs-name"groupId>

       <artifactId>spring-boot-starter-web<span class="hljs-name"artifactId>

   <span class="hljs-name"dependency>

(c)編寫啟動類,App.java:

package com.kfit;

import org.springframework.boot.SpringApplication;

**import **org.springframework.boot.autoconfigure.SpringBootApplication;

/**

  • @author Angel --守護天使
  • @version v.0.1
  • @date 2017年3月26日

*/

@SpringBootApplication

**public **class App {

**public ****static ****void** main(String[] args) {

   SpringApplication. *run* (App. **class** , args);

}

}

(c)編寫定時任務調度類,MyTask.java:

package com.kfit.task;

import java.util.Date;

import org.springframework.context.annotation.Configuration;

import org.springframework.scheduling.annotation.EnableScheduling;

import org.springframework.scheduling.annotation.Scheduled;

/**

  • @author Angel --守護天使
  • @version v.0.1
  • @date 2017年3月26日

*/

@Configuration

@EnableScheduling

**public **class MyTask {

/**

 * 我們希望這個方法每10秒打印一次.

 * cron:定時任務表達式.

 *

 * 指定:秒,分鐘,小時,日期,月份,星期,年(可選).

 * *:任意.

 *

 */

@Scheduled(cron="0/10 * ** * *")

//@Scheduled(cron="0/10* * * * ?")

**public ****void** tast1(){

   System. ***out*** .println("MyTask.tast1(),"+**new** Date());

}



/**

 * 我們希望這個方法每1分鐘打印一次.

 */

@Scheduled(cron="0 0/1 * ** *")

**public ****void** tast2(){

   System. ***out*** .println("MyTask.tast2(),"+**new** Date());

}

}

在這里有有一個地方需要特別說明下:

MyTask.tast1()

MyTask.tast1()

MyTask.tast1()

MyTask.tast2()

MyTask.tast1()


tast1: 每10秒打印1次.

task2: 每1分鐘打印1次.


1分鐘是60秒 = 沒打印6次task1之后才能夠打印1次task2.


spring task 在計算時間的時候,是根據當前服務器的系統時間進行計算.

如果是每10秒執行一次的話,那么它是從系統時間的0,10,20秒進行計算的.

如果是每1分鐘執行一次的話,那么它是從系統時間的1分鐘,2分鐘進行計算的。

如果是這樣的話,那么我會碰到這樣的情況:就是當我們剛剛啟動程序的時候,我們的時間

剛好是9:39:55秒,那么就會出現5秒之后會執行1次task1和1次task2.

(d)啟動運行程序進行測試:

這個大家運行完之后關注下控制臺的打印信息

(3)cronExpression配置說明;

字段 允許值 允許的特殊字符
0-59 , - * /
0-59 , - * /
小時 0-23 , - * /
日期 1-31 , - * ? / LWC
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / LC #
年(可選) 留空, 1970-2099 , - * /

特殊字符:

在Cron表達式的時間字段中,除允許設置數值外,還能你使用一些特殊的字符,提供列表、范圍、通配符等功能

星號(*)

可用在所有字段下,表示對應時間域名的每一個時刻,如*用在分鐘字段,表示“每分鐘”。

問號(?)

只能用在日期和星期字段,代表無意義的值,比如使用L設定為當月的最后一天,則配置日期配置就沒有意義了,可用?作占位符的作用。

減號(-)

表示一個范圍,如在日期字段5-10,表示從五號到10號,相當于使用逗號的5,6,7,8,9,10

逗號(,)

表示一個并列有效值,比如在月份字段使用JAN,DEC表示1月和12月

斜杠(/)

x/y表示一個等步長序列,x為起始值,y為增量步長值,如在小時使用1/3相當于1,4,7,10當時用*/y時,相當于0/y

L

L(Last)只能在日期和星期字段使用,但意思不同。在日期字段,表示當月最后一天,在星期字段,表示星期六(如果按星期天為一星期的第一天的概念,星期六就是最后一天。如果L在星期字段,且前面有一個整數值X,表示“這個月的最后一個星期X”,比如3L表示某個月的最后一個星期二。

W

選擇離給定日期最近的工作日(周一至周五)。例如你指定“15W”作為day of month字段的值,就意味著“每個月與15號最近的工作日”。所以,如果15號是周六,則觸發器會在14號(周五)觸發。如果15號是周日,則觸發器會在16號(周一)觸發。如果15號是周二,則觸發器會在15號(周二)觸發。但是,如果你指定“1W”作為day of month字段的值,且1號是周六,則觸發器會在3號(周一)觸發。quartz不會“跳出”月份的界限。

LW****組合

在日期字段可以組合使用LW,表示當月最后一個工作日(周一至周五)

井號(#)

只能在星期字段中使用指定每月第幾個星期X。例如day of week字段的“6#3”,就意味著“每月第3個星期五”(day3=星期五,#3=第三個);“2#1”就意味著“每月第1個星期一”;“4#5”就意味著“每月第5個星期3。需要注意的是“#5”,如果在當月沒有第5個星期三,則觸發器不會觸發。

C

只能在日期和星期字段中使用,表示計劃所關聯的誒其,如果日期沒有被關聯,相當于日歷中的所有日期,如5C在日期字段相當于5號之后的第一天,1C在日期字段使用相當于星期填后的第一天

(4)cronExpression實例;

CRON表達式 含義

"0 0 12 * * ?" 每天中午十二點觸發

"0 15 10 ? * *" 每天早上10:15觸發

"0 15 10 * * ?" 每天早上10:15觸發

"0 15 10 * * ? *" 每天早上10:15觸發

"0 15 10 * * ?2005" 2005年的每天早上10:15觸發

“0 * 14 * * ?" 每天從下午2點開始到2點59分每分鐘一次觸發

"0 0/5 14 * * ?" 每天從下午2點開始到2:55分結束每5分鐘一次觸發

"0 0/5 14,18 * *?" 每天的下午2點至2:55和6點至6點55分兩個時間段內每5分鐘一次觸發

"0 0-5 14 * * ?" 每天14:00至14:05每分鐘一次觸發

"0 10,44 14 ? 3WED" 三月的每周三的14:10和14:44觸發

"0 15 10 ? *MON-FRI" 每個周一、周二、周三、周四、周五的10:15觸發

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2966

    瀏覽量

    104704
  • XML
    XML
    +關注

    關注

    0

    文章

    188

    瀏覽量

    33078
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    14340
收藏 人收藏

    評論

    相關推薦

    Spring Boot如何實現異步任務

    Spring Boot 提供了多種方式來實現異步任務,這里介紹三種主要實現方式。 1、基于注解 @Async @Async 注解是 Spring
    的頭像 發表于 09-30 10:32 ?1436次閱讀

    Linux系統定時任務Crond

    會定期(默認每分鐘檢查一次)檢查系統中是否有要執行的任務工作,如果有,便會根據其預先設定的定時任務規則自動執行該定時任務工作,這個crond定時任務服務就相當于我們平時早起使用的鬧鐘一
    發表于 07-05 06:22

    定時任務的發展史是怎么樣的

    定時任務是互聯網行業里最常用的服務之一,本文給大家介紹定時任務在我司的發展歷程。 linux系統中一般使用crontab命令來實現,在Java世界里,使用最廣泛的就是quartz了。我司
    發表于 07-18 17:38 ?0次下載
    <b class='flag-5'>定時任務</b>的發展史是怎么樣的

    Spring Boot定時任務的重寫方法

    Spring Boot應該是目前最火的java開源框架了,它簡化了我們創建一個web服務的過程,讓我們可以在很短時間、基本零配置就可以啟動一個web服務。
    的頭像 發表于 01-20 17:38 ?2442次閱讀

    SpringBoot如何實現動態增刪啟停定時任務

    spring boot項目中,可以通過 @EnableScheduling 注解和@Scheduled注解實現定時任務,也可以通過SchedulingConfigurer接口來實現定時任務
    的頭像 發表于 09-24 09:49 ?2936次閱讀
    SpringBoot如何實現動態增刪啟停<b class='flag-5'>定時任務</b>

    Python定時任務的實現方式

    調度模塊schedule實現定時任務 利用任務框架APScheduler實現定時任務 Job 作業 Trigger 觸發器 Executor 執行器 Jobstore 作業存儲 Eve
    的頭像 發表于 10-08 15:20 ?5725次閱讀

    說說Spring定時任務如何大規模企業級運用

    定時任務是業務應用開發中非常普遍存在的場景(如:每分鐘掃描超時支付的訂單,每小時清理一次數據庫歷史數據,每天統計前一天的數據并生成報表等等),解決方案很多,Spring 框架提供了一種通過注解來配置定時任務的解決方案,接入非常的
    的頭像 發表于 11-04 09:36 ?691次閱讀

    解析Golang定時任務庫gron設計和原理

    正巧,最近看到了 gron 這個開源項目,它是用 Golang 實現一個并發安全的定時任務庫。實現非常簡單精巧,代碼量也不多。今天我們就來一起結合源碼看一下,怎樣基于 Golang 的能力做出來一個【定時任務庫】。
    的頭像 發表于 12-15 13:57 ?1328次閱讀

    xxl-job任務調度中間件解決定時任務調度問題

    xxl-job是一款非常優秀的任務調度中間件,輕量級、使用簡單、支持分布式等優點,讓它廣泛應用在我們的項目中,解決了不少定時任務調度問題。
    的頭像 發表于 01-31 09:53 ?1925次閱讀

    求一種SpringBoot定時任務動態管理通用解決方案

    SpringBoot的定時任務的加強工具,實現對SpringBoot原生的定時任務進行動態管理,完全兼容原生@Scheduled注解,無需對原本的定時任務進行修改
    的頭像 發表于 02-03 09:49 ?774次閱讀

    Spring Boot中整合兩種定時任務的方法

    框架 Quartz ,Spring Boot 源自 Spring+SpringMVC ,因此天然具備這兩個 Spring 中的定時任務實現策
    的頭像 發表于 04-07 14:55 ?1543次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>中整合兩種<b class='flag-5'>定時任務</b>的方法

    Spring Boot中如何使用定時任務

    本文介紹Spring Boot 中如何使用定時任務,使用非常簡單,就不做過多說明了。
    的頭像 發表于 04-12 10:56 ?966次閱讀

    python定時任務實踐

    由于程序需求,監測配置變化需要設置定時任務,每分鐘執行一次,對任務持久化要求不高,不需要時可以關閉定時任務
    的頭像 發表于 05-20 17:53 ?973次閱讀
    python<b class='flag-5'>定時任務</b>實踐

    Spring Boot Actuator快速入門

    不知道大家在寫 Spring Boot 項目的過程中,使用過 Spring Boot Actuator 嗎?知道 Spring
    的頭像 發表于 10-09 17:11 ?633次閱讀

    linux定時任務的用法總結

    習慣了使用 windows 的計劃任務,使用 linux 中的 crontab 管理定時任務時很不適應。
    的頭像 發表于 08-14 18:16 ?838次閱讀
    linux<b class='flag-5'>定時任務</b>的用法總結
    主站蜘蛛池模板: 亚洲欧美中文日韩v在线| 人人干人人插| 榴莲推广APP网站入口官网| 久在线观看福利视频| 美女被男人撕衣舔胸| 青年医生插曲| 忘忧草下载| 亚洲色欲色欲www474ee| 中文字幕在线观看网站| youjizz怎么看| 国产精品免费大片一区二区| 黄色一级毛片免费| 久久久97人妻无码精品蜜桃| 女同给老师下媚药| 婷婷综合亚洲爱久久| 野花视频在线观看免费| 99久久免费看国产精品| 国产精品久久久久成人免费| 精品国产露脸久久AV麻豆| 欧美精品专区免费观看| 熟女少妇内射日韩亚洲| 伊人影院综合在线| se01国产短视频在线观看| 国产精品久久久久久久久99热| 精品久久伊人| 欧洲精品一区二区不卡观看| 亚洲 欧美无码原创区| 123超碰在线视频| 动漫女主被扒开双腿羞辱| 嗨嗨快播电影| 欧美日韩北条麻妃一区二区| 无码国产精品高潮久久9| 中文字幕欧美日韩VA免费视频| 成人在线免费观看| 九色PORNY丨视频入口| 日本不卡三卡四卡| 野花影院手机在线观看| 俄罗斯人与动ZOOZ| 萝莉御姐被吸奶| 亚洲第一综合天堂另类专| AV久久久囯产果冻传媒|