精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Spring + asyncTool:實現復雜任務的優雅編排與高效執行

開發 前端
asyncTool 采用低線程設計,減少線程的創建和銷毀開銷。例如,在多個任務依賴關系中,后續任務可以復用前一個任務的線程。

一、集成到 Spring Boot

1. 添加依賴

在項目的 pom.xml 文件中添加 asyncTool 的依賴:

<dependency>
    <groupId>com.jd.platform</groupId>
    <artifactId>asyncTool</artifactId>
    <version>版本號</version>
</dependency>

2. 配置線程池

雖然 asyncTool 內部會管理線程池,但為了更好地控制線程的使用,可以自定義線程池。以下是兩種配置方式:

1)自定義線程池
@Configuration
@EnableAsync // 開啟線程池
public class TaskExecutePool {

    @Autowired
    private TaskThreadPoolConfig config;

    @Bean
    public Executor myTaskAsyncPool() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(config.getCorePoolSize()); // 核心線程池大小
        executor.setMaxPoolSize(config.getMaxPoolSize()); // 最大線程數
        executor.setQueueCapacity(config.getQueueCapacity()); // 隊列容量
        executor.setKeepAliveSeconds(config.getKeepAliveSeconds()); // 活躍時間
        executor.setThreadNamePrefix("MyExecutor-"); // 線程名字前綴
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); // 拒絕策略
        executor.initialize();
        return executor;
    }
}
2)修改原生 Spring 異步線程池的裝配
@Configuration
@EnableAsync // 開啟線程池
public class NativeAsyncTaskExecutePool implements AsyncConfigurer {

    @Autowired
    private TaskThreadPoolConfig config;

    @Bean
    public Executor getAsyncExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(config.getCorePoolSize());
        executor.setMaxPoolSize(config.getMaxPoolSize());
        executor.setQueueCapacity(config.getQueueCapacity());
        executor.setKeepAliveSeconds(config.getKeepAliveSeconds());
        executor.setThreadNamePrefix("MyExecutor2-");
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        executor.initialize();
        return executor;
    }

    @Override
    public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
        return (ex, method, objects) -> {
            log.error("==========================" + ex.getMessage() + "=======================", ex);
            log.error("exception method:" + method.getName());
        };
    }
}

二、核心方法說明

1. IWorker 接口

action(T object, Map<String, WorkerWrapper> allWrappers):任務的具體執行邏輯。object 是任務的輸入參數,allWrappers 是所有任務的包裝類集合,可用于獲取其他任務的結果。

defaultValue():任務超時或異常時的默認返回值。

2. ICallback 接口

begin():任務開始時的回調。

result(boolean success, T param, WorkResult<V> workResult):任務執行結果的回調。success 表示任務是否成功,param 是任務的輸入參數,workResult 是任務的執行結果。

3. WorkerWrapper 類

id:任務的唯一標識。

param:任務的輸入參數。

worker:任務的具體實現。

callback:任務的回調實現。

depend:任務的依賴關系,定義任務的執行順序。

next:任務的后續任務,用于定義任務的執行順序。

三、詳細使用方式及示例

1. 串行任務

任務按順序依次執行。以下是一個串行任務的示例:

// 定義任務 A
WorkerWrapper wrapperA = new WorkerWrapper.Builder<Integer, Integer>()
        .id("workerA")
        .worker(new WorkerA())
        .callback(new WorkerA())
        .param(1)
        .build();

// 定義任務 B,依賴于任務 A
WorkerWrapper wrapperB = new WorkerWrapper.Builder<Integer, Integer>()
        .id("workerB")
        .worker(new WorkerB())
        .callback(new WorkerB())
        .param(2)
        .depend(wrapperA)
        .build();

// 定義任務 C,依賴于任務 B
WorkerWrapper wrapperC = new WorkerWrapper.Builder<Integer, Integer>()
        .id("workerC")
        .worker(new WorkerC())
        .callback(new WorkerC())
        .param(3)
        .depend(wrapperB)
        .build();

// 提交任務
Async.beginWork(1000, wrapperA);

2. 并行任務

多個任務同時執行。以下是一個并行任務的示例:

// 定義任務 A
WorkerWrapper wrapperA = new WorkerWrapper.Builder<Integer, Integer>()
        .id("workerA")
        .worker(new WorkerA())
        .callback(new WorkerA())
        .param(1)
        .build();

// 定義任務 B
WorkerWrapper wrapperB = new WorkerWrapper.Builder<Integer, Integer>()
        .id("workerB")
        .worker(new WorkerB())
        .callback(new WorkerB())
        .param(2)
        .build();

// 定義任務 C
WorkerWrapper wrapperC = new WorkerWrapper.Builder<Integer, Integer>()
        .id("workerC")
        .worker(new WorkerC())
        .callback(new WorkerC())
        .param(3)
        .build();

// 提交任務
Async.beginWork(1000, wrapperA, wrapperB, wrapperC);

3. 阻塞等待 - 先串行,后并行

先執行任務 A,然后任務 B 和任務 C 并行執行:

// 定義任務 A
WorkerWrapper wrapperA = new WorkerWrapper.Builder<Integer, Integer>()
        .id("workerA")
        .worker(new WorkerA())
        .callback(new WorkerA())
        .param(1)
        .build();

// 定義任務 B,依賴于任務 A
WorkerWrapper wrapperB = new WorkerWrapper.Builder<Integer, Integer>()
        .id("workerB")
        .worker(new WorkerB())
        .callback(new WorkerB())
        .param(2)
        .depend(wrapperA)
        .build();

// 定義任務 C,依賴于任務 A
WorkerWrapper wrapperC = new WorkerWrapper.Builder<Integer, Integer>()
        .id("workerC")
        .worker(new WorkerC())
        .callback(new WorkerC())
        .param(3)
        .depend(wrapperA)
        .build();

// 提交任務
Async.beginWork(1000, wrapperA);

4. 阻塞等待 - 先并行,后串行

任務 B 和任務 C 并行執行,完成后任務 A 執行:

// 定義任務 A
WorkerWrapper wrapperA = new WorkerWrapper.Builder<Integer, Integer>()
        .id("workerA")
        .worker(new WorkerA())
        .callback(new WorkerA())
        .param(null) // 參數為任務 B 和任務 C 的結果
        .build();

// 定義任務 B
WorkerWrapper wrapperB = new WorkerWrapper.Builder<Integer, Integer>()
        .id("workerB")
        .worker(new WorkerB())
        .callback(new WorkerB())
        .param(2)
        .next(wrapperA)
        .build();

// 定義任務 C
WorkerWrapper wrapperC = new WorkerWrapper.Builder<Integer, Integer>()
        .id("workerC")
        .worker(new WorkerC())
        .callback(new WorkerC())
        .param(3)
        .next(wrapperA)
        .build();

// 提交任務
Async.beginWork(1000, wrapperB, wrapperC);

四、主要作用說明

1. 任務編排

靈活的并行與串行組合: asyncTool 支持任意組合多線程的并行和串行任務,開發者可以根據業務需求靈活定義任務的執行順序。

任務依賴管理: 它允許任務之間存在強依賴和弱依賴關系。例如,某些任務必須在其他任務完成后才能執行,而另一些任務則可以在依賴任務中的任意一個或多個完成后執行。

2. 執行監控與回調

全鏈路回調機制: 每個任務在執行過程中,無論成功、失敗、超時還是異常,都會觸發回調函數。這使得開發者可以實時監控任務的執行狀態。

任務跳過回調: 即使某些任務被跳過未執行,asyncTool 也會提供回調,方便開發者進行日志記錄或異常處理。

3. 異常處理與容錯

異常與超時處理: 每個任務可以設置超時時間和默認值,當任務執行失敗或超時時,會返回默認值,確保整個任務鏈的穩定性。

獨立任務容錯: 單個任務的失敗不會影響其他任務的回調和最終結果的獲取,但如果任務依賴的上游任務失敗,則當前任務也會失敗并返回默認值。

4. 性能優化

低線程設計: asyncTool 采用低線程設計,減少線程的創建和銷毀開銷。例如,在多個任務依賴關系中,后續任務可以復用前一個任務的線程。

無鎖機制: 整個框架全程無鎖,避免了鎖帶來的性能開銷,提高了并發性能。

5. 結果管理

按順序返回結果: 任務執行完成后,asyncTool 可以按任務添加的順序返回結果列表,方便開發者進行后續處理。

支持異步回調: 除了同步阻塞返回結果外,還支持整個任務組的異步回調,避免阻塞主線程。

6. 線程池管理

線程池共享與獨占: 支持為每個任務組獨享線程池,也可以讓所有任務組共享一個線程池,靈活配置資源。

7. 簡化開發

封裝復雜邏輯: asyncTool 封裝了復雜的并發邏輯,使得開發者可以更專注于業務邏輯的實現,而無需深入了解底層的并發機制。

五、注意事項

任務的線程安全: 由于任務可能在多個線程中并發執行,需要確保任務的線程安全性。

任務的異常處理: 在任務執行過程中可能會出現異常,需要合理地處理異常,避免影響整個應用的運行。

任務的超時設置: 合理設置任務的超時時間,避免任務長時間未完成導致資源浪費。

任務的依賴關系: 正確配置任務的依賴關系,確保任務按預期順序執行。

通過以上詳細說明和代碼示例,你可以在 Spring Boot 項目中靈活使用 asyncTool 實現復雜的多線程任務編排。

責任編輯:武曉燕 來源: 碼猿技術專欄
相關推薦

2025-11-10 03:15:00

線程池asyncToolSpring

2021-05-12 22:07:43

并發編排任務

2023-09-03 14:17:56

深度學習人工智能

2024-05-16 17:58:30

線程任務線程通訊線程池

2025-09-29 04:00:00

2024-09-09 15:09:30

2025-03-11 00:55:00

Spring停機安全

2025-09-09 00:00:01

2024-11-15 07:20:00

應用程序編程C#

2025-09-08 01:00:00

2024-11-04 16:01:01

2023-11-16 09:30:27

系統任務

2024-08-08 16:34:16

C++11編程

2024-07-03 08:13:56

規則執行器代碼

2020-10-30 08:53:34

機器學習任務編排

2025-03-03 08:49:59

2025-04-21 02:20:00

2021-03-09 13:18:53

加密解密參數

2024-03-13 14:40:35

SpringCron表達式

2022-06-04 12:25:10

解密加密過濾器
點贊
收藏

51CTO技術棧公眾號

亚洲电影观看| 国产嫩bbwbbw高潮| 视频免费一区| 国产剧情一区在线| 轻轻草成人在线| 精品调教chinesegay| 亚洲欧洲日产国码无码久久99 | 欧美无人高清视频在线观看| 亚洲欧美日韩精品综合在线观看| www.亚洲欧美| 另类国产ts人妖高潮视频| www.久久久久| 91精品国产高清91久久久久久 | 9191在线观看| 国产99精品在线观看| 欧美最猛性xxxxx(亚洲精品)| 亚洲不卡的av| 狠狠一区二区三区| 欧美日韩二区三区| 久久精品视频16| 日本最新在线视频| 91丨九色porny丨蝌蚪| 91精品国产综合久久香蕉最新版| 日韩精品一区二区av| 视频在线不卡免费观看| 亚洲精品美女在线| 黄色一级片免费播放| 成人直播视频| 亚洲无线码一区二区三区| 一区二区在线观看网站| 日韩一区二区三区中文字幕| 国产高清在线精品| 国产精品一区二区女厕厕| 国产情侣在线视频| 综合在线一区| 中文字幕亚洲无线码a| 在线免费观看污视频| 国产中文欧美日韩在线| 欧美色电影在线| 国产成人精品无码播放| mm视频在线视频| 亚洲激情校园春色| 中文字幕乱码一区二区三区| av在线资源站| 久久久另类综合| 国产专区一区二区三区| 成人午夜视频一区二区播放| 国产在线一区二区| 国产日韩欧美在线| 中文字幕第315页| 日本欧美在线观看| 国产国产精品人在线视| 欧美日韩一二三四区| av成人毛片| 久久男人av资源网站| 国产波霸爆乳一区二区| 在线免费观看日本欧美爱情大片| 中文字幕少妇一区二区三区| 日本美女xxx| 欧美精品一区二区三区中文字幕| 亚洲人成在线观看| 国产手机在线观看| 欧美三级美国一级| 亚洲天堂网在线观看| 男人舔女人下部高潮全视频| 精品国产一区二区三区噜噜噜 | 50度灰在线| 亚洲婷婷在线视频| 国产内射老熟女aaaa| 中文字幕免费高清电视剧网站在线观看| 亚洲欧美在线观看| 中文字幕乱码免费| 第一av在线| 欧美日韩亚洲网| 草草草在线视频| 国产资源一区| 欧美一区二区福利在线| 韩国av中国字幕| 欧美日韩麻豆| 伊人伊成久久人综合网小说| 亚洲激情图片网| 伊人久久大香线蕉综合四虎小说| 欧美国产日本高清在线| 午夜影院在线看| 日韩经典一区二区| 成人精品网站在线观看| www.黄色片| av在线免费不卡| 日本精品一区二区| 国内外激情在线| 亚洲h精品动漫在线观看| 国产xxxxx在线观看| 久久夜夜久久| 亚洲精品在线电影| www.av天天| 欧美日本不卡| 国产成+人+综合+亚洲欧洲| 91尤物国产福利在线观看| 国产.精品.日韩.另类.中文.在线.播放 | xxxxxx国产| 日本不卡一区二区三区高清视频| 91久久久久久久| 无码精品黑人一区二区三区| 国产精品午夜在线| 青草成人免费视频| 中文字幕一区2区3区| 国产黄色精品网站| 欧美视频1区| 制服丝袜中文字幕在线| 一本一道久久a久久精品综合蜜臀| 在线观看国产一级片| 动漫视频在线一区| 亚洲无线码在线一区观看| 亚洲国产精品久| 日韩av中文字幕一区二区三区| 亚洲精品欧美极品| 免费在线性爱视频| 亚洲综合区在线| 亚洲精品午夜在线观看| 日本午夜精品| 欧美成人午夜免费视在线看片| 免费黄色网址在线| 精品影院一区二区久久久| 久久精品综合一区| 日本黄网站色大片免费观看| 国内在线视频| 欧美猛男超大videosgay| 国产三级视频网站| 亚洲成人直播| 亚洲综合在线中文字幕| 超碰免费97在线观看| 欧美日韩国产精品一区| 中国男女全黄大片| 希岛爱理av一区二区三区| 69**夜色精品国产69乱| 成人乱码一区二区三区| 亚洲人成网站色在线观看| 国产激情在线观看视频| 美女av一区| 久久久之久亚州精品露出| 国产男男gay网站| 国产精品国产三级国产普通话三级| 日本wwww视频| 国产精品调教视频| 欧美日韩国产第一页| 国产www免费观看| 国产精品人人做人人爽人人添| 又粗又黑又大的吊av| xxxx日韩| 97香蕉超级碰碰久久免费的优势| 日本高清视频www| 亚洲一卡二卡三卡四卡五卡| 中文字幕第三区| 91精品天堂福利在线观看| 国产欧美一区二区| 99视频在线观看地址| 欧美亚洲高清一区| 超碰人人干人人| 秋霞电影一区二区| 亚洲人久久久| 亚洲福利影视| 欧美大胆在线视频| www.色亚洲| 一区二区免费在线| 中国xxxx性xxxx产国| 99热这里只有精品8| 久久久久久久久久久久久9999| 黄视频网站在线观看| 国产视频久久久久| 黄色污污网站在线观看| 国产喂奶挤奶一区二区三区| 三级视频中文字幕| 亚洲国产精品91| 国产精品视频免费一区| 深夜在线视频| 这里只有精品久久| 国产三级自拍视频| 亚洲成a人在线观看| 日本黄色网址大全| 美女视频网站久久| www.激情网| 国产白丝在线观看| 日韩电影中文字幕在线| 91丨九色丨海角社区| 国产精品久久久一区麻豆最新章节| 国内自拍第二页| 亚洲激情精品| 视频一区二区三区在线观看| 懂色av色香蕉一区二区蜜桃| 久久久久久成人精品| 狠狠狠综合7777久夜色撩人 | 国产精品美女一区| 亚洲一区二区欧美| 亚洲最大成人综合网| 国产91丝袜在线播放| 无罩大乳的熟妇正在播放| 日本在线电影一区二区三区| 成人羞羞视频免费| 91精品影视| 欧美激情精品久久久久| 国产午夜在线视频| 欧美本精品男人aⅴ天堂| 亚洲欧美综合自拍| 亚洲欧美激情在线| b站大片免费直播| 国产宾馆实践打屁股91| 狠狠躁狠狠躁视频专区| 亚洲国产精品第一区二区| 亚洲国产精品一区在线观看不卡 | 国产伦理精品| 日韩中文在线不卡| 亚洲av片一区二区三区| 91精品国产综合久久久蜜臀图片| 天堂网视频在线| 亚洲综合激情另类小说区| 成人黄色a级片| 99国产精品久久| 在线播放国产视频| 久久国产一二区| www.射射射| 亚洲欧美日韩高清在线| 日本一区视频在线播放| 国产一级成人av| 114国产精品久久免费观看| 日韩成人高清| 日韩美女免费线视频| caoporn-草棚在线视频最| 久久香蕉国产线看观看av| 国产经典自拍视频在线观看| 日韩av一区在线观看| 亚洲av无码一区二区三区性色| 欧美日韩精品综合在线| 99re国产在线| 一本大道av一区二区在线播放| 久久久综合久久| 亚洲男人天堂av| 黄色片网站在线播放| 欧美激情综合五月色丁香小说| 国产熟妇搡bbbb搡bbbb| 99久久久精品免费观看国产蜜| 无码人妻一区二区三区一| 久久精品99久久久| 777视频在线| 日韩vs国产vs欧美| 久久久久久久片| 日韩va亚洲va欧美va久久| 日韩中文字幕组| 日韩中文字幕区一区有砖一区| 国产精品va无码一区二区| 99精品国产一区二区青青牛奶| 日韩精品视频在线观看视频| 极品日韩av| 欧美爱爱视频免费看| 在线一区欧美| 男人操女人逼免费视频| 午夜影院日韩| 国产精品亚洲αv天堂无码| 久久永久免费| 日本888xxxx| 美女诱惑一区二区| 香蕉视频999| 国产成a人亚洲精品| 人妻av一区二区三区| k8久久久一区二区三区| 一级性生活大片| 中文字幕av一区二区三区高| 青青青手机在线视频| 亚洲男帅同性gay1069| 国产一级一片免费播放放a| 精品毛片网大全| 波多野结衣啪啪| 欧美顶级少妇做爰| 国产夫绿帽单男3p精品视频| 精品国产乱码久久久久久1区2区 | 国产欧美日本一区二区三区| 午夜影院黄色片| 亚洲色图制服诱惑| 妺妺窝人体色www聚色窝仙踪| 五月婷婷欧美视频| 色老头一区二区| 这里是久久伊人| 午夜视频福利在线| 中文字幕免费国产精品| 成人国产免费电影| 91国产高清在线| 久久国产三级| 国产精品免费一区二区| 国产乱码精品一区二区亚洲| 国产日韩第一页| 亚洲美女91| 日本超碰在线观看| 成a人片亚洲日本久久| 丁香花五月婷婷| 亚洲国产精品精华液网站| 天堂网一区二区| 日韩欧美国产电影| 国产三级在线看| 欧美激情三级免费| 91av一区| 好看的日韩精品视频在线| 91p九色成人| 超碰97网站| 国内黄色精品| 人人妻人人澡人人爽欧美一区双| 日韩av不卡一区二区| 丰满少妇xbxb毛片日本| 中文字幕av在线一区二区三区| www.99re7.com| 欧美日韩国产首页在线观看| 污污网站免费在线观看| 插插插亚洲综合网| 日韩欧美一区二区三区在线观看| 国产精品区一区| 国产精品99一区二区三区| 国产最新免费视频| 成人综合在线观看| 后入内射无码人妻一区| 一本一本大道香蕉久在线精品 | 国产免费一区二区三区视频| 国产综合色视频| 波多野在线播放| 午夜视频久久久久久| 国产视频aaa| 色综久久综合桃花网| 欧美日韩国产观看视频| 国产成人精品一区二区三区福利 | 久久久国产午夜精品 | 国内综合精品午夜久久资源| 亚洲最大成人在线观看| 久久午夜电影网| 在线观看免费国产视频| 欧美成人一区二区| 精精国产xxxx视频在线| 国产精品永久免费视频| 九九视频免费观看视频精品 | 蜜桃视频免费观看一区| 大又大又粗又硬又爽少妇毛片| 亚洲国产综合91精品麻豆| 亚洲国产欧美另类| 久久999免费视频| 高清一区二区| 国产日韩视频在线播放| 麻豆中文一区二区| 先锋影音av在线| 色8久久精品久久久久久蜜| 蜜桃视频在线免费| 国产99久久精品一区二区永久免费 | 欧美一级播放| 香蕉网在线播放| 色欧美88888久久久久久影院| 无码国产精品高潮久久99| 欧美亚洲伦理www| 蜜乳av综合| 国产天堂在线播放| 国产日产欧美一区二区三区| 性高潮视频在线观看| 欧美优质美女网站| 国产综合在线观看| 国产精品免费福利| 久久中文字幕av| 性生活一级大片| 亚洲h在线观看| 嫩草精品影院| 国产综合色香蕉精品| 国产精品91一区二区三区| 亚洲国产午夜精品| 亚洲综合一二区| 视频一区二区三区国产| 日本三级韩国三级久久| 999国产精品| 成人在线观看一区二区| 色综合久久中文字幕综合网| 国产三级电影在线观看| 成人久久精品视频| 狠狠入ady亚洲精品经典电影| 国产精品边吃奶边做爽| 91国偷自产一区二区开放时间| 日本激情视频在线观看| www.成人三级视频| 亚洲主播在线| 中文字幕无码日韩专区免费 | 色综合久久99| 麻豆传媒在线观看| 国产一级精品aaaaa看| 久久综合影视| 青青草在线观看视频| 日韩精品视频观看| 青青青国产精品| 国产v片免费观看| 中文子幕无线码一区tr| 亚洲精品人妻无码| 国产精品美女www| 亚洲激情黄色| 91香蕉视频网| 日韩电影视频免费| 宅男噜噜噜66国产精品免费| 成人av一级片| 亚洲黄色av一区| 岛国视频免费在线观看| 成人午夜电影在线播放|