最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

分布式調(diào)度器之Spring Task 的使用詳解

 更新時間:2024年10月23日 10:28:43   作者:哈嘍哈嘍哈嘍~  
SpringTask是Spring框架中用于任務調(diào)度的組件,通過簡單的注解就能實現(xiàn)定時任務的創(chuàng)建和調(diào)度,可以通過配置線程池來實現(xiàn),本文給大家介紹分布式調(diào)度器之Spring Task 的使用,感興趣的朋友跟隨小編一起看看吧

Spring Task是 Spring 框架的一個組件,它為任務調(diào)度提供了支持,使開發(fā)者能 創(chuàng)建后臺任務 定期執(zhí)行任務

1、啟動類(App.java)上加@EnableScheduling注解: 開啟基于注解的任務調(diào)度器

默認情況下,系統(tǒng)會自動啟動一個線程,調(diào)度執(zhí)行項目中定義的所有定時任務

這個注解 是SpringBoot內(nèi)置的 不需要依賴任何的starter包

2、同步定時任務

需要在定時執(zhí)行的方法上 添加@Scheduled注解

定時執(zhí)行的方法不能有參數(shù),并且一般沒有返回值

定時任務所在的類要作為 Spring Bean,在類上添加@Component注解即可,即:定時方法所在的類,要放到IOC容器里面

注意:使用@Scheduled注解形式的定時任務,默認是單線程來執(zhí)行項目中所有的定時任務。

即使如果同一時刻有兩個定時任務需要執(zhí)行,那么只能其中一個定時任務完成之后再執(zhí)行下一個定時任務。

如果項目只有一個定時任務還好。若定時任務增多時,如果一個任務被阻塞,則會導致其他任務無法正常執(zhí)行。

若要改變這種行為,使得定時任務能夠并發(fā)執(zhí)行,可以配置任務調(diào)度線程池,來解決以上問題。首先配置一個線程池

package com.***.springtask;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
@Slf4j
@EnableAsync //開啟異步支持
@EnableScheduling //開啟定時任務支持
public class ScheduledTask {
    int i = 1;
    //@Scheduled(fixedRate = 5000, initialDelay = 15*1000)
    public void task1(){
//        i++;
//        if(i > 5){
//            ThreadUtil.safeSleep(8*1000);
//        }
        log.debug("task1執(zhí)行了{}次,{}",i,Thread.currentThread().getId());
    }
    @Scheduled(cron = "0/5 * * * * ?")
    @Async("asyncScheduledPool")
    public void task2(){
        // ThreadUtil.safeSleep(8*1000);
        log.debug("task2執(zhí)行了,{}",Thread.currentThread().getId());
    }
}

3、多線程(異步)定時任務

3.1 配置線程池

package com.***.config;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
@Component
public class ExecutorConfig {
    //定義核心線程數(shù)
    public static final  int CORE_POOL_SIZE = 10;
    // 最大線程數(shù)
    public static final  int MAX_POOL_SIZE = 20;
    // 任務隊列容量大小
    public static final  int QUEUE_MAX_COUNT = 100;
    @Bean("asyncScheduledPool")
    public Executor asyncScheduledPool(){
        //自定義線程池
        ThreadPoolTaskExecutor threadPoolExecutor = new ThreadPoolTaskExecutor();
        //設置核心線程數(shù)
        threadPoolExecutor.setCorePoolSize(CORE_POOL_SIZE);
        //設置最大線程數(shù) : 長工 +  臨時工
        threadPoolExecutor.setMaxPoolSize(MAX_POOL_SIZE);
        //設置任務隊列容量大小
        threadPoolExecutor.setQueueCapacity(QUEUE_MAX_COUNT);
        //設置線程的名稱前綴
        threadPoolExecutor.setThreadNamePrefix("myTask-");
        //設置拒絕策略
        threadPoolExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
        return  threadPoolExecutor;
    }
}

3.2 開啟異步支持

要在 Spring Boot 應用中啟用異步方法調(diào)用,需在啟動類上添加 @EnableAsync 注解

3.3 定義異步方法

在服務類中定義一個方法,并使用 @Async 注解標記它以實現(xiàn)異步執(zhí)行

4、Api說明

4.1 fixedDelay

@Scheduled(fixedDelay = 4000) 

4.2 fixedRate

@Scheduled(fixedRate = 10000) 

4.3 initialDelay

@Scheduled(initialDelay=1000, fixedRate=5000) //第一次延遲1秒后執(zhí)行,之后按fixedRate的規(guī)則每5秒執(zhí)行一次

4.4 cron(掌握)

cron表達式 ① 格式

Seconds Minutes Hours Day Month Week

② 特殊符號

*:任意值
-:范圍,eg:3-5指3點到5點執(zhí)行
,:枚舉,eg:3,5指3點和5點執(zhí)行
/:增量,eg:3/5從第3秒開始每隔5秒執(zhí)行一次
?:忽略,且只能在 日期域 或 星期域 只用

③ 練習 標準格式: * * * * * ?

周一至周五的上午10:15觸發(fā)

0 15 10 ? * 2-6

表示在每月的1日的凌晨2點調(diào)整任務

0 0 2 1 * ?

朝九晚五工作時間內(nèi)每半小時

0 0/30 9-16 * * ?

每天上午10點,下午2點,4點

0 0 10,14,16 * * ?

表示每個星期三中午12點

0 0 12 ? * 4

在每天下午2點到下午2:59期間的每1分鐘觸發(fā)

0 /1 14-15 * * ?

在每天下午2點到下午2:05期間的每1分鐘觸發(fā)

0 0-5/1 14 * * ?

在每天下午2點到下午2:55期間的每5分鐘觸發(fā)

0 0-55/5 14 * * ?

在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發(fā)

0 0-55/5 14,18 * * ?

到此這篇關于分布式調(diào)度器之Spring Task 的使用詳解的文章就介紹到這了,更多相關Spring Task 使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解決SpringBoot項目啟動后網(wǎng)頁顯示Please sign in的問題

    解決SpringBoot項目啟動后網(wǎng)頁顯示Please sign in的問題

    這篇文章主要介紹了解決SpringBoot項目啟動后網(wǎng)頁顯示Please sign in的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 將java項目打包成exe可執(zhí)行文件的完整步驟

    將java項目打包成exe可執(zhí)行文件的完整步驟

    最近項目要求,需要將java項目生成exe文件,下面這篇文章主要給大家介紹了關于如何將java項目打包成exe可執(zhí)行文件的相關資料,文章通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • 一文詳解如何使用Java打造更優(yōu)雅的AI代理

    一文詳解如何使用Java打造更優(yōu)雅的AI代理

    在人工智能(AI)代理開發(fā)的浪潮中,Python似乎一直是默認的編程語言選擇,本文將深入探索Java如何以更少的代碼和更高的可擴展性創(chuàng)造出更高效,更優(yōu)雅的AI代理,希望對大家有所幫助
    2025-10-10
  • springmvc 防止表單重復提交的兩種方法

    springmvc 防止表單重復提交的兩種方法

    最近在本地開發(fā)測試的時候,遇到一個表單重復提交的現(xiàn)象。本文主要介紹了springmvc 防止表單重復提交的兩種方法,感興趣的可以了解一下
    2021-08-08
  • SpringBoot配置文件密碼加密與解密的操作代碼

    SpringBoot配置文件密碼加密與解密的操作代碼

    我們在SpringBoot項目當中,會把數(shù)據(jù)庫的用戶名密碼等配置直接放在yaml或者properties文件中,這樣維護數(shù)據(jù)庫的密碼等敏感信息顯然是有一定風險的,所以我們需要給密碼加解密,本文給大家介紹了SpringBoot配置文件密碼加密與解密的操作代碼,需要的朋友可以參考下
    2024-12-12
  • Java上傳視頻實例代碼

    Java上傳視頻實例代碼

    本文通過實例代碼給大家講解了java上傳視頻功能,代碼分為頁面前臺和后臺,工具類,具體實例代碼大家通過本文學習吧
    2018-01-01
  • Java中List與數(shù)組相互轉(zhuǎn)換實例分析

    Java中List與數(shù)組相互轉(zhuǎn)換實例分析

    這篇文章主要介紹了Java中List與數(shù)組相互轉(zhuǎn)換的方法,實例分析了Java中List與數(shù)組相互轉(zhuǎn)換中容易出現(xiàn)的問題與相關的解決方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • @KafkaListener 如何使用

    @KafkaListener 如何使用

    這篇文章主要介紹了@KafkaListener 如何使用,本文通過圖文實例代碼相結合給大家詳細講解,文末給大家介紹了kafka的消費者分區(qū)分配策略,需要的朋友可以參考下
    2023-02-02
  • 你知道怎么用Spring的三級緩存解決循環(huán)依賴嗎

    你知道怎么用Spring的三級緩存解決循環(huán)依賴嗎

    這篇文章主要為大家詳細介紹了Spring的三級緩存解決循環(huán)依賴,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Java中的Spring?如何處理循環(huán)依賴

    Java中的Spring?如何處理循環(huán)依賴

    這篇文章主要介紹了Java中的Spring?如何處理循環(huán)依賴,依賴指的是Bean與Bean之間的依賴關系,循環(huán)依賴指的是兩個或者多個Bean相互依賴,關于更多Spring?處理循環(huán)依賴的詳情,需要的朋友可以參考下面文章具體內(nèi)容
    2022-05-05

最新評論

许昌市| 庄河市| 铜鼓县| 社会| 东山县| 锡林浩特市| 霍林郭勒市| 高唐县| 沁阳市| 浙江省| 兰州市| 长海县| 峡江县| 津市市| 达日县| 广平县| 锡林郭勒盟| 油尖旺区| 嫩江县| 色达县| 和平区| 葫芦岛市| 苍溪县| 武定县| 灯塔市| 遵化市| 左权县| 岢岚县| 原平市| 孟村| 民乐县| 绿春县| 子洲县| 麻城市| 永康市| 保山市| 改则县| 广东省| 江达县| 上犹县| 申扎县|