日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

springboot-如何配置線程池實現定時任務

來源: 責編: 時間:2024-02-29 14:39:36 247觀看
導讀一、步驟概覽二、步驟說明1.封裝自定義線程池封裝自定義線程池類是為了在線程執行完畢后,我們檢查是否存在異常,如果存在異常,日志打印詳細異常信息,這樣可以可以幫助我們及時發現和解決問題。JDK 默認提供的定時調度線

一、步驟概覽

YR728資訊網——每日最新資訊28at.com

二、步驟說明

1.封裝自定義線程池

封裝自定義線程池類是為了在線程執行完畢后,我們檢查是否存在異常,如果存在異常,日志打印詳細異常信息,這樣可以可以幫助我們及時發現和解決問題。YR728資訊網——每日最新資訊28at.com

JDK 默認提供的定時調度線程池類是
ScheduledThreadPoolExecutor,我們只需要繼承它并重寫它的 afterExecute 方法,添加異常日志打印的邏輯。
YR728資訊網——每日最新資訊28at.com

  • MyScheduledThreadPoolExecutor
public class MyScheduledThreadPoolExecutor extends ScheduledThreadPoolExecutor {    private Logger log = LoggerFactory.getLogger(MyScheduledThreadPoolExecutor.class);    public MyScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory factory) {        super(corePoolSize, factory);    }    @Override    protected void afterExecute(Runnable r, Throwable t) {        super.afterExecute(r, t);        // 打印異常信息        this.printException(r, t);    }    public void printException(Runnable r, Throwable t) {        // 判斷 r 是 Future 實例并且已經完成執行的情況下,獲取它的執行結果,并檢查是否有異常拋出        if (t == null && r instanceof Future<?>) {            try {                Future<?> future = (Future<?>) r;                if (future.isDone()) {                    future.get();                }            } catch (CancellationException ce) {                t = ce;            } catch (ExecutionException ee) {                t = ee.getCause();            } catch (InterruptedException ie) {                Thread.currentThread().interrupt();            }        }        if (t != null) {            log.error(t.getMessage(), t);        }    }}

2.定義調度配置

創建 ScheduleConfig 類,用于配置定時調度的執行器。代碼概覽如圖所示:YR728資訊網——每日最新資訊28at.com

YR728資訊網——每日最新資訊28at.com

① 創建定時調度線程池YR728資訊網——每日最新資訊28at.com

使用自定義封裝的線程池類,創建線程池,指定線程池創建線程名前綴,并將其設置成應用程序的守護線程。YR728資訊網——每日最新資訊28at.com

  • ScheduleConfig#taskExecutor
@Bean(destroyMethod="shutdown")public ExecutorService taskExecutor() {  ThreadFactory factory = new BasicThreadFactory.Builder()    .namingPattern("schedule-pool-%d")    .daemon(true)    .build();  return new MyScheduledThreadPoolExecutor(10, factory);}

② 設置任務調度器YR728資訊網——每日最新資訊28at.com

實現 SchedulingConfigurer 接口,重寫 configureTasks 方法,允許我們對任務調度進行自定義配置,這邊我們將我們自定義創建的線程池設置成任務調度器。YR728資訊網——每日最新資訊28at.com

  • ScheduleConfig#configureTasks
@Configurationpublic class ScheduleConfig implements SchedulingConfigurer {    @Override    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {        // 自定義線程池作為調度器        taskRegistrar.setScheduler(taskExecutor());    }}

3.啟用調度

在應用啟動類上添加注解 `@EnableScheduling`,用于啟用定時調度,操作如圖所示:YR728資訊網——每日最新資訊28at.com

YR728資訊網——每日最新資訊28at.com

4.注解標記調度策略

在我們需要定時執行的方法上使用相關注解,標記其調度策略。YR728資訊網——每日最新資訊28at.com

①.固定時間執行YR728資訊網——每日最新資訊28at.com

如果需要在固定的時間點執行任務,可以使用 @Scheduled(cron = "表達式") 注解來指定 cron 表達式,如下所示:YR728資訊網——每日最新資訊28at.com

@Componentpublic class MyTask {    @Scheduled(cron = "0 0 12 * * ?")    public void runTask() {        // 在每天中午 12 點執行任務    }}

其中 cron 表達式使用說明如下表格所示YR728資訊網——每日最新資訊28at.com

位數YR728資訊網——每日最新資訊28at.com

字段YR728資訊網——每日最新資訊28at.com

允許值YR728資訊網——每日最新資訊28at.com

1YR728資訊網——每日最新資訊28at.com

YR728資訊網——每日最新資訊28at.com

0-59YR728資訊網——每日最新資訊28at.com

2YR728資訊網——每日最新資訊28at.com

分鐘YR728資訊網——每日最新資訊28at.com

0-59YR728資訊網——每日最新資訊28at.com

3YR728資訊網——每日最新資訊28at.com

小時YR728資訊網——每日最新資訊28at.com

0-23YR728資訊網——每日最新資訊28at.com

4YR728資訊網——每日最新資訊28at.com

日期YR728資訊網——每日最新資訊28at.com

1-31YR728資訊網——每日最新資訊28at.com

5YR728資訊網——每日最新資訊28at.com

月份YR728資訊網——每日最新資訊28at.com

1-12 或 JAN-DECYR728資訊網——每日最新資訊28at.com

6YR728資訊網——每日最新資訊28at.com

星期YR728資訊網——每日最新資訊28at.com

0-6 或 SUN-SAT,其中 0 和 7 都表示周日YR728資訊網——每日最新資訊28at.com

7YR728資訊網——每日最新資訊28at.com

年(可選)YR728資訊網——每日最新資訊28at.com

空白表示任意年,或者指定特定年份,如 2022、2023YR728資訊網——每日最新資訊28at.com

② 間隔執行YR728資訊網——每日最新資訊28at.com

如果需要在固定的時間間隔內周期性地執行任務,可以使用 @Scheduled(fixedRate = 時間間隔) 或 @Scheduled(fixedDelay = 時間間隔) 注解來指定時間間隔,如下所示:YR728資訊網——每日最新資訊28at.com

@Componentpublic class MyTask {    @Scheduled(fixedRate = 5000)    public void runTask() {        // 每 5 秒執行一次任務    }}

③延遲執行YR728資訊網——每日最新資訊28at.com

如果需要在應用啟動后延遲一段時間后執行任務,可以使用 @Scheduled(initialDelay = 延遲時間) 注解來指定延遲時間,如下所示:YR728資訊網——每日最新資訊28at.com

@Componentpublic class MyTask {    @Scheduled(initialDelay = 5000, fixedRate = 5000)    public void runTask() {        // 在應用啟動后延遲 5 秒執行任務,之后每 5 秒執行一次任務    }}

三、代碼測試

我們就以間隔執行進行測試,測試方法每3秒執行一次。YR728資訊網——每日最新資訊28at.com

1.測試代碼

@Slf4j@Servicepublic class FixedDelayTask {    private static int count1 = 1;    @Scheduled(fixedDelay = 3000)    public void fixedDelay() {        log.info(String.format("第%s次執行", count1++));    }}
2.測試結果

YR728資訊網——每日最新資訊28at.com

兩次執行相隔3秒鐘,并且線程名也是以我們自定義的為前綴。YR728資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-75309-0.htmlspringboot-如何配置線程池實現定時任務

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: C++魔法技能:類型強制轉換全指南

下一篇: Vue2問題:分享一個通用多文件類型預覽庫

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲视频在线观看一区| 国产精品无码永久免费888| 久久久久9999亚洲精品| 欧美在线网站| 玖玖玖国产精品| 欧美日韩精品一区二区三区| 国产精品久久久久久久9999| 国产日韩欧美亚洲| 亚洲国产精品一区在线观看不卡| 日韩天堂在线观看| 小嫩嫩精品导航| 麻豆国产精品777777在线| 欧美美女日韩| 国产视频一区欧美| 亚洲国产你懂的| 亚洲制服欧美中文字幕中文字幕| 久久夜色精品国产亚洲aⅴ | 国产精品海角社区在线观看| 国产一区二区三区日韩欧美| 日韩视频免费看| 西西人体一区二区| 欧美高清在线一区| 国产日韩欧美在线播放| 日韩视频在线观看免费| 久久精品人人爽| 欧美日韩在线播放一区| 樱桃国产成人精品视频| 亚洲一区精彩视频| 欧美国产欧美综合 | 久久久噜噜噜久久中文字幕色伊伊 | 国产精品久久久久久av福利软件| 亚洲电影在线看| 亚洲欧美日韩国产中文| 欧美激情影音先锋| 国内精品美女在线观看| 亚洲一区二区三区四区五区午夜| 免费黄网站欧美| 国产手机视频精品| 亚洲香蕉在线观看| 欧美激情视频一区二区三区不卡| 国产一区视频观看| 午夜在线一区二区| 国产精品xxxxx| 亚洲精品一区二区网址| 久久深夜福利免费观看| 国产伦一区二区三区色一情| 一本色道**综合亚洲精品蜜桃冫| 美女露胸一区二区三区| 国产亚洲一区在线播放| 亚洲欧美日韩精品久久奇米色影视| 欧美国产极速在线| 在线高清一区| 久久久久久久尹人综合网亚洲| 国产精品久久久久久av福利软件| 日韩视频免费观看高清在线视频| 噜噜噜91成人网| 黄色成人精品网站| 久久国产精品久久久久久电车| 国产精品男gay被猛男狂揉视频| 亚洲美女诱惑| 欧美激情一区二区| 亚洲激情一区二区| 美日韩丰满少妇在线观看| 国语自产精品视频在线看一大j8 | 在线视频你懂得一区| 欧美激情综合| 亚洲精品国产精品久久清纯直播| 久久伊人一区二区| 激情综合中文娱乐网| 久久精品91久久久久久再现| 国产欧美va欧美不卡在线| 亚洲一区二区黄色| 国产精品福利网| 亚洲视频在线观看视频| 欧美性视频网站| 亚洲视频一区在线| 欧美视频在线一区| 亚洲午夜电影网| 国产精品海角社区在线观看| 亚洲一区二区三区色| 欧美午夜精品理论片a级按摩| 一区二区电影免费观看| 国产精品久久久久久户外露出| 亚洲一区二区影院| 国产麻豆午夜三级精品| 欧美综合77777色婷婷| 国产伊人精品| 久久综合网络一区二区| 亚洲国产精品久久久久| 美女日韩欧美| 亚洲精品欧美日韩| 欧美视频免费在线| 午夜精品成人在线| 国内精品久久久久久 | 国产精品久在线观看| 午夜精品成人在线| 国产主播一区二区| 美女精品在线| 99re6热在线精品视频播放速度| 欧美日韩亚洲一区二区三区四区| 亚洲天堂av电影| 国产区日韩欧美| 久久亚洲精品一区二区| 最新热久久免费视频| 欧美日韩精品免费| 午夜精品剧场| 精品不卡视频| 欧美欧美全黄| 午夜一区二区三视频在线观看| 韩国一区电影| 欧美精品日韩三级| 午夜亚洲精品| 亚洲国产高清在线| 国产精品h在线观看| 欧美在线资源| 亚洲激情电影在线| 欧美午夜精品久久久久久浪潮| 欧美在线视频一区二区| 亚洲国产天堂久久国产91| 欧美无乱码久久久免费午夜一区| 香蕉亚洲视频| 亚洲人午夜精品| 国产精品一区二区久久| 久久精品国产99精品国产亚洲性色 | 亚洲男女毛片无遮挡| 韩国女主播一区| 欧美日韩性视频在线| 欧美自拍偷拍午夜视频| 亚洲美女尤物影院| 国产午夜精品全部视频播放| 欧美gay视频激情| 亚洲欧美国产精品桃花| 亚洲第一毛片| 国产精品看片你懂得| 噜噜噜躁狠狠躁狠狠精品视频| 在线亚洲欧美视频| 伊人成综合网伊人222| 欧美三级在线| 久久久久久久久蜜桃| 一区二区三区.www| 精品电影在线观看| 国产精品成人一区二区| 另类成人小视频在线| 亚洲欧美日本伦理| 亚洲精品1234| 国产一区二区成人| 欧美三区美女| 噜噜爱69成人精品| 欧美亚洲色图校园春色| 日韩亚洲国产欧美| 黄色成人在线网站| 欧美午夜a级限制福利片| 久久综合色8888| 午夜在线视频一区二区区别| 亚洲精品中文字幕女同| 国内精品久久久久久久影视蜜臀| 欧美视频日韩视频| 欧美成黄导航| 欧美在线一二三四区| 亚洲视频1区2区| 91久久精品国产91久久性色| 国产亚洲欧美日韩美女| 国产精品久久久久久影院8一贰佰| 欧美va天堂| 久久九九精品99国产精品| 亚洲欧美国产日韩天堂区| 99这里只有久久精品视频| 亚洲第一区在线观看| 国产一区二区三区电影在线观看| 国产精品videosex极品| 欧美成人精品高清在线播放| 久久久91精品国产一区二区精品| 亚洲欧美日本伦理| 亚洲一线二线三线久久久| 99re视频这里只有精品| 91久久久精品| 亚洲国产你懂的| 在线观看日韩av| 国产主播精品在线| 国产一区二区成人久久免费影院| 国产精品免费一区豆花| 欧美午夜一区二区| 欧美日韩日日骚| 欧美日本一区| 欧美区亚洲区| 欧美精品一区二区蜜臀亚洲| 欧美成人按摩| 欧美va天堂va视频va在线| 久热这里只精品99re8久| 久久婷婷色综合| 久久夜色精品国产噜噜av| 久久夜色精品国产| 久久免费一区| 久久精品国产亚洲一区二区三区| 亚洲影院免费| 亚洲欧美www| 亚洲一区中文| 亚洲欧美日韩一区二区三区在线观看| 一区二区免费看| 宅男精品导航| 亚洲一区二区三区国产| 亚洲一二三区精品| 亚洲欧美国产精品va在线观看| 亚洲影院色无极综合|