在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    2975

    瀏覽量

    105167
  • XML
    XML
    +關注

    關注

    0

    文章

    188

    瀏覽量

    33142
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    14392
收藏 人收藏

    評論

    相關推薦

    Spring Boot如何實現異步任務

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

    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 ?2485次閱讀

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

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

    Python定時任務的實現方式

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

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

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

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

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

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

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

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

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

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

    框架 Quartz ,Spring Boot 源自 Spring+SpringMVC ,因此天然具備這兩個 Spring 中的定時任務實現策
    的頭像 發表于 04-07 14:55 ?1605次閱讀
    <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 ?1015次閱讀

    python定時任務實踐

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

    Spring Boot Actuator快速入門

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

    linux定時任務的用法總結

    習慣了使用 windows 的計劃任務,使用 linux 中的 crontab 管理定時任務時很不適應。
    的頭像 發表于 08-14 18:16 ?908次閱讀
    linux<b class='flag-5'>定時任務</b>的用法總結
    主站蜘蛛池模板: 欧美视频图片 | 插久久| 国产成人精品亚洲日本在线观看 | 四虎永久在线精品国产 | 天堂网在线最新版www中文网 | 色琪琪一本到影院 | 久久久夜夜夜 | 夜夜爱夜夜爽 | 天天射天天干天天舔 | 久久久久久久性潮 | 婷婷在线网 | 免费视频网站在线看视频 | 亚洲最大的黄色网址 | 在线观看视频一区二区 | 亚1州区2区三区4区产品 | 黄色毛片子 | 丁香五六月婷婷 | 伊人久久大香线蕉资源 | 国产男靠女免费视频网站 | 日本三级a| 午夜高清免费在线观看 | japanese 69hdxxxx日本| 男女爱爱视频免费 | 人人插视频 | 夜操| 国产免费久久 | 欧美18同性gay视频 | 国产精品天天影视久久综合网 | 天天干夜夜草 | 国产三级黄色毛片 | 小雪被撑暴黑人黑人与亚洲女人 | 五月天狠狠 | 午夜爱爱网站 | 国产亚洲一区二区三区在线 | 理论片久久 | 超黄视频在线观看 | 婷婷丁香色 | 神马午夜限制 | 天堂网在线www | 视频在线精品 | 女性一级全黄生活片免费看 |