色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

Spring Boot定時任務單線程多線程實現代碼解析

瀏覽:3日期:2023-08-22 17:31:46

1、創建定時任務:

@Componentpublic class AutoNotifyController { /** * 獲取RedisUtils注入的bean * * @return */ private ThreadUtil getThreadUtil() { ThreadUtil threadUtil = SpringContextUtil.getBean('threadUtil'); return threadUtil; } /** * @描述: 推送啟動充電結果的自動獲取和處理分發方法 * @輸入值: void * @返回值: void */ @Scheduled(cron = '*/5 * * * * ?') public void AutoNotifyStartChargeResult() { getThreadUtil().AutoNotifyStartChargeResult(); } /** * @描述: 推送充電狀態的自動獲取和處理分發方法 * @輸入值: void * @返回值: void */ @Scheduled(cron = '*/50 * * * * ?') public void AutoNotifyChargeStatus() { getThreadUtil().AutoNotifyChargeStatus(); } /** * @描述: 推送停止充電結果的自動獲取和處理分發方法 * @輸入值: void * @返回值: void */ @Scheduled(cron = '*/5 * * * * ?') public void AutoNotifyStopChargeResult() { getThreadUtil().AutoNotifyStopChargeResult(); } /** * @描述: 推送訂單信息的自動獲取和處理分發方法 * @輸入值: void * @返回值: void */ @Scheduled(cron = '*/5 * * * * ?') public void AutoNotifyOrderInfo() { getThreadUtil().AutoNotifyOrderInfo(); } /** * @描述: 公共信息部分的設備狀態變化推送接口的自動獲取和處理分發方法 * @輸入值: void * @返回值: void */ @Scheduled(fixedRate = 200) public void checkGunStatus() { getThreadUtil().checkGunStatus(); } /** * @描述: 對于Redis中的活躍訂單增加和刪除的輪詢執行方法 */ @Scheduled(cron = '*/5 * * * * ?') public void ActiveOrderAddAndDelete() { getThreadUtil().ActiveOrderAddAndDelete(); } /** * @描述: 對于Redis中的結束訂單訂單增加和刪除的輪詢執行方法 */ @Scheduled(cron = '*/5 * * * * ?') public void EndOrderAddAndDelete() { getThreadUtil().EndOrderAddAndDelete(); }}

使用 @Scheduled來創建定時任務 這個注解用來標注一個定時任務方法。

通過看 @Scheduled源碼可以看出它支持多種參數:

(1)cron:cron表達式,指定任務在特定時間執行;

(2)fixedDelay:表示上一次任務執行完成后多久再次執行,參數類型為long,單位ms;

(3)fixedDelayString:與fixedDelay含義一樣,只是參數類型變為String;

(4)fixedRate:表示按一定的頻率執行任務,參數類型為long,單位ms;

(5)fixedRateString: 與fixedRate的含義一樣,只是將參數類型變為String;

(6)initialDelay:表示延遲多久再第一次執行任務,參數類型為long,單位ms;

(7)initialDelayString:與initialDelay的含義一樣,只是將參數類型變為String;

(8)zone:時區,默認為當前時區,一般沒有用到。

2、開啟定時任務:

@SpringBootApplication@EnableSchedulingpublic class PositivebuttjointApplication extends SpringBootServletInitializer{ public static void main(String[] args) { SpringApplication.run(PositivebuttjointApplication.class, args); }

注:這里的 @EnableScheduling 注解,它的作用是發現注解 @Scheduled的任務并由后臺執行。沒有它的話將無法執行定時任務。

引用官方文檔原文:

@EnableScheduling ensures that a background task executor is created. Without it, nothing gets scheduled.

3、執行結果(單線程)

就完成了一個簡單的定時任務模型,下面執行springBoot觀察執行結果:

Spring Boot定時任務單線程多線程實現代碼解析

從控制臺輸入的結果中我們可以看出所有的定時任務都是在同一個線程池用同一個線程來處理的,那么我們如何來并發的處理各定時任務呢,請繼續向下看。

4、多線程處理定時任務:

1.開啟多線程

@SpringBootApplication@EnableScheduling@EnableAsyncpublic class PositivebuttjointApplication extends SpringBootServletInitializer{ public static void main(String[] args) { SpringApplication.run(PositivebuttjointApplication.class, args); }

加入@EnableAsync開啟多線程

2.使用多線程

@Async public void AutoNotifyStartChargeResult() { }

 調用的方法上加上@Async使用多線程

3.配置連接池

@Configurationpublic class ScheduleConfiguration implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(this.getTaskScheduler()); } private ThreadPoolTaskScheduler getTaskScheduler() { ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.setPoolSize(20); taskScheduler.setThreadNamePrefix('schedule-pool-'); taskScheduler.initialize(); return taskScheduler; }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 久久久久国产精品免费网站 | 美美女高清毛片视频免费观看 | a毛片成人免费全部播放 | 亚洲美女高清aⅴ视频免费 亚洲美女黄色片 | 天干夜天天夜天干天ww | 国产男女视频 | 日韩一区二区中文字幕 | 国产综合亚洲专区在线 | 国产丝袜不卡一区二区 | 国产一级一级一级国产片 | 欧美日本一区二区三区生 | 亚洲美女福利视频在线 | 成人做爰视频www片 成人做爰视频www视频 | 日本色中色 | 国产黄色激情视频 | 日韩欧美国产精品 | 玖玖影院在线观看 | 成人小视频在线播放 | 日韩免费黄色片 | 亚洲一级毛片中文字幕 | 亚洲成a人片 | 色综合天天综合网看在线影院 | 国产在线视频专区 | 精品国产一区二区三区在线观看 | 久久手机免费视频 | 亚洲高清无在码在线无弹窗 | 久久视精品 | 国产成人毛片精品不卡在线 | 欧美成人精品第一区 | 一级毛毛片毛片毛片毛片在线看 | 日韩一级视频在线观看播放 | 全免费a级毛片免费毛视频 全午夜免费一级毛片 | 九九久久久久午夜精选 | 一级毛片欧美大片 | 一级片免费的 | 97婷婷狠狠成人免费视频 | 亚洲精品视频免费看 | 久久免费小视频 | 99久久99热久久精品免费看 | 加勒比一区在线 | 成a人片亚洲日本久久 |