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

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

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

3天內不再提示

如何使用Spring scheduling task簡化定時任務功能的實現?

冬至子 ? 來源:天碼營 ? 作者:Cliff ? 2023-05-22 16:48 ? 次閱讀

很多時候,我們有這么一個需求,需要在每天的某個固定時間或者每隔一段時間讓應用去執行某一個任務。為了實現這個需求,通常我們會通過多線程來實現這個功能,但是這樣我們需要自己做一些比較麻煩的工作。接下來,讓我們看看如何使用Spring scheduling task簡化定時任務功能的實現。

添加maven依賴

為了方便展示,我們使用Spring Boot來簡化我們的Spring配置。因為我們使用的是Spring自帶的Scheduling,因此我們只需要引入最進本的spring-boot-starter即可。

<parent>
    <groupId>org.springframework.boot<span class="hljs-name"groupId>
    <artifactId>spring-boot-starter-parent<span class="hljs-name"artifactId>
    <version>1.2.5.RELEASE<span class="hljs-name"version>
<span class="hljs-name"parent>

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

<dependencies>
    <dependency>
        <groupId>org.springframework.boot<span class="hljs-name"groupId>
        <artifactId>spring-boot-starter<span class="hljs-name"artifactId>
    <span class="hljs-name"dependency>
<span class="hljs-name"dependencies>

注意,Spring boot需要JDK8的編譯環境。

創建Scheduled Task

讓我們創建一個ScheduleTask來實現我們的需求:

@Component
public class ScheduledTask {

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    private Integer count0 = 1;
    private Integer count1 = 1;
    private Integer count2 = 1;

    @Scheduled(fixedRate = 5000)
    public void reportCurrentTime() throws InterruptedException {
        System.out.println(String.format("---第%s次執行,當前時間為:%s", count0++, dateFormat.format(new Date())));
    }

    @Scheduled(fixedDelay = 5000)
    public void reportCurrentTimeAfterSleep() throws InterruptedException {
        System.out.println(String.format("===第%s次執行,當前時間為:%s", count1++, dateFormat.format(new Date())));
    }

    @Scheduled(cron = "*/5 * * * * *")
    public void reportCurrentTimeCron() throws InterruptedException {
        System.out.println(String.format("+++第%s次執行,當前時間為:%s", count2++, dateFormat.format(new Date())));
    }

}

可以看到,我們在我們真正需要執行的方法上添加了@Scheduled標注,表示這個方法是需要定時執行的。

@Scheduled標注中,我們使用了三種方式來實現了同一個功能:每隔5秒鐘記錄一次當前的時間:

fixedRate = 5000表示每隔5000ms,Spring scheduling會調用一次該方法,不論該方法的執行時間是多少

fixedDelay = 5000表示當方法執行完畢5000ms后,Spring scheduling會再次調用該方法

cron = "*/5 * * * * * *"提供了一種通用的定時任務表達式,這里表示每隔5秒執行一次。

配置Scheduling

接下來我們通過Spring boot來配置一個最簡單的Spring web應用,我們只需要一個帶有main方法的類即可:

[]()

@SpringBootApplication
@EnableScheduling
public class App {

    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

}

我們先來看看class上的標注:

@SpringBootApplication 實際上是了以下三個標注的集合:

@Configuration 告訴Spring這是一個配置類,里面的所有標注了@Bean的方法的返回值將被注冊為一個Bean

@EnableAutoConfiguration 告訴Spring基于class path的設置、其他bean以及其他設置來為應用添加各種Bean

@ComponentScan 告訴Spring掃描Class path下所有類來生成相應的Bean

@EnableScheduling 告訴Spring創建一個task executor,如果我們沒有這個標注,所有@Scheduled標注都不會執行

通過以上標注,我們完成了schedule的基本配置。最后,我們添加main方法來啟動一個Spring boot應用即可。

測試

在根目錄下執行命令:mvn spring-boot:run,我們可以看到:

圖片

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

    關注

    0

    文章

    138

    瀏覽量

    24424
  • JDK
    JDK
    +關注

    關注

    0

    文章

    81

    瀏覽量

    16602
收藏 人收藏

    評論

    相關推薦

    關于stm32系統定時任務的問題

    在用stm32做一個飛控程序時。需要用到上面這種系統循環定時任務,有一個問題:在System_Task_Loop函數里面,有1ms 、2ms、5ms的循環任務,但是他的這些定時是怎么得
    發表于 10-10 23:43

    Spring Boot定時任務的重寫方法

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

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

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

    Python定時任務實現方式

    在日常工作中,我們常常會用到需要周期性執行的任務,一種方式是采用 Linux 系統自帶的 crond 結合命令行實現。另外一種方式是直接使用Python。接下來整理的是常見的Python定時任務
    的頭像 發表于 10-08 15:20 ?5743次閱讀

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

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

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

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

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

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

    SpringBoot如何實現定時任務(上)

    SpringBoot創建定時任務的方式很簡單,主要有兩種方式:一、基于注解的方式(@Scheduled)二、數據庫動態配置。實際開發中,第一種需要在代碼中寫死表達式,如果修改起來,又得重啟會顯得很麻煩;所以我們往往會采取第二種方式,可以直接從數據庫中讀取定時任務的指定執行
    的頭像 發表于 04-07 14:51 ?1357次閱讀
    SpringBoot如何<b class='flag-5'>實現</b><b class='flag-5'>定時任務</b>(上)

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

    Spring + SpringMVC 環境中,一般來說,要實現定時任務,我們有兩中方案,一種是使用 Spring 自帶的定時任務處理器
    的頭像 發表于 04-07 14:55 ?1567次閱讀
    <b class='flag-5'>Spring</b> Boot中整合兩種<b class='flag-5'>定時任務</b>的方法

    Spring Boot中如何使用定時任務

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

    如何動態添加修改刪除定時任務

    如何動態添加修改刪除定時任務?那么我們一起看看具體怎么實現,先看下本節大綱: (1)思路說明; (2)代碼解析; (3)修改定時任務執行周期特別說明;
    的頭像 發表于 04-12 11:06 ?1089次閱讀

    Linux如何使用cron進行定時任務的操作

    按計劃執行命令對于計算機來說非常重要,因為假如我親自去執行一些任務的話,可能會因為多方面因素不能按時執行,所以定時任務就顯得非常重要了! cron就是一個能夠執行定時任務的命令,其實該命令本身不難,下面小編帶您詳細了解!
    的頭像 發表于 05-12 16:27 ?2065次閱讀

    python定時任務實踐

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

    定時器如何實現定時任務

    1.1、單次定時任務實現 boost 的asio庫里有幾個定時器,老的有 deadline_timer , 還有三個可配合 C++11 的 chrono
    的頭像 發表于 11-09 17:20 ?966次閱讀

    linux定時任務的用法總結

    習慣了使用 windows 的計劃任務,使用 linux 中的 crontab 管理定時任務時很不適應。
    的頭像 發表于 08-14 18:16 ?860次閱讀
    linux<b class='flag-5'>定時任務</b>的用法總結
    主站蜘蛛池模板: 东北老妇人70OLDMAN| 嫩B人妻精品一区二区三区| vr亚洲成年网址在线观看| 999www成人免费视频| 超碰最新网站| 国产三级精品三级男人的天堂| 无码AV动漫精品一区二区免费| 秋霞电影伦网理最新在线看片| 美国一级黄色| 亚洲欧美中文日韩视频| 4388成人| 纯肉合集(高H)| 女人爽到高潮嗷嗷叫视频| 《乳色吐息》无删减版在线观看 | 久久综合伊人 magnet| 亚洲欧洲免费三级网站| 国产三级多多影院| 小p孩玩成年女性啪啪资源| 中文字幕在线免费视频| 九九热最新视频| 天天噜日日噜夜夜噜| 99re28久久热在线观看| 免费看毛片网| 影音先锋av色咪影院| 极品美女穴| 午夜免费福利| 国内精品七七久久影院| 涩涩游戏盒| 国产免费看片| 亚洲乱码AV久久久久久久| 久久成人国产精品一区二区| 夜月视频直播免费观看| 老色哥网站| 扒开美女嫩bbb| 欧美Av无码高清在线| 被两根巨大同时进去高H| 色狗av影院| 成年私人影院网站在线看| 色色色五的天| 久久99免费视频| beeg日本老师|