精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

jiujiure精品视频播放| 高潮一区二区| 成人污污视频在线观看| 91国产精品91| 又嫩又硬又黄又爽的视频| japansex久久高清精品| 亚洲午夜电影在线| 视频一区视频二区视频三区高| 91麻豆国产在线| 精品999日本| 在线免费看av不卡| 香蕉久久久久久av成人| 综合在线影院| 亚洲综合色丁香婷婷六月图片| 欧美一区免费视频| 午夜精品久久久久久久99热黄桃| 久久国产福利| 久99久在线视频| 女人黄色一级片| 激情小说一区| 欧美一级国产精品| 天天操天天摸天天爽| 欧美卡一卡二| 中文字幕一区二区三区在线播放| 就去色蜜桃综合| www.激情五月.com| 麻豆久久久久久| 欧美影院久久久| 国产精彩视频在线| 91精品天堂福利在线观看| 亚洲色无码播放| 日批免费观看视频| 伊人亚洲精品| 在线观看视频欧美| 精品中文字幕av| 丁香花在线影院| 亚洲特级片在线| 亚洲午夜精品福利| 国产一区二区影视| 91麻豆产精品久久久久久| 成人动漫在线观看视频| 96亚洲精品久久久蜜桃| 首页国产欧美日韩丝袜| 555www成人网| 日本午夜精品理论片a级app发布| 亚洲精品二区三区| 久久影院在线观看| 国精品人伦一区二区三区蜜桃| 国产传媒欧美日韩成人精品大片| 亚洲精品久久久久久久久| 欧美性生交xxxxx| 亚洲视频国产| 精品免费国产二区三区| 在线观看免费看片| 日韩中文一区二区| 日韩三级视频在线观看| 四虎国产精品免费| 日韩亚洲精品在线观看| 日韩视频一区二区三区在线播放 | 蜜桃传媒在线观看免费进入| 一区二区三区欧美亚洲| 狠狠干视频网站| 青草在线视频| 午夜国产精品影院在线观看| av免费观看大全| 亚洲欧洲自拍| 欧美性xxxxxxxx| 97超碰成人在线| 中文字幕日韩亚洲| 欧美一区二区私人影院日本| 97超碰人人看| 91精品入口| 亚洲免费一级电影| 国产精品免费无码| 欧美日韩在线网站| 日韩中文字幕亚洲| 久久久精品一区二区涩爱| 1024成人| 国产精品电影在线观看| 中文字幕在线观看你懂的| 国精产品一区一区三区mba视频| 91av免费看| 亚洲色图21p| 中文字幕二三区不卡| 一级一片免费播放| 国产美女情趣调教h一区二区| 欧美日韩国产专区| 国产野外作爱视频播放| 国产美女视频一区二区| 亚洲成人在线视频播放| 最新中文字幕视频| 欧美电影免费播放| 国内精品模特av私拍在线观看| 中文字幕激情小说| 久久99精品久久久久久动态图 | 欧美国产在线视频| 亚洲色成人www永久网站| 国内精品视频666| 精品视频第一区| 日本高清中文字幕在线| 亚洲不卡一区二区三区| 国产成人黄色网址| 国内精品国产成人国产三级粉色| 一区二区三区日韩在线| 久久免费少妇高潮99精品| 久久精品人人做人人爽电影蜜月| 91在线免费视频| 猫咪在线永久网站| 一区二区在线观看不卡| 亚洲免费av一区二区三区| 99久久免费精品国产72精品九九| 亚洲无线码在线一区观看| 91成人福利视频| 久久婷婷久久| 精品不卡一区二区三区| 麻豆av在线导航| 色又黄又爽网站www久久| 国产免费a级片| 日韩aaaa| 日本欧美一二三区| 人妻va精品va欧美va| 国产精品成人免费精品自在线观看| 91九色丨porny丨国产jk| 伊人久久大香伊蕉在人线观看热v| 国产视频久久久久| 国产无遮挡又黄又爽| 国产一区美女在线| 亚洲三区视频| 影视一区二区三区| 日韩精品免费视频| 国产亚洲欧美精品久久久久久| 毛片基地黄久久久久久天堂| 人偷久久久久久久偷女厕| 丰满的护士2在线观看高清| 欧美一区二区视频在线观看2020| 国产视频123区| 久久亚洲精选| 欧美日韩精品免费观看视一区二区| 秋霞在线视频| 欧美成人一级视频| 九九精品视频免费| 久久99精品国产.久久久久| 日韩欧美精品久久| 久久电影tv| 亚洲欧美色婷婷| 国产精品人人人人| 91丨九色丨国产丨porny| 日韩五码在线观看| 欧美精品中文| 91精品国产成人| 亚洲av成人无码网天堂| 亚洲v中文字幕| 国产婷婷在线观看| 在线观看不卡| 久久av一区二区三区亚洲| 天堂中文在线播放| 亚洲精品日韩在线| 性色av免费观看| 国产亚洲欧美在线| 浓精h攵女乱爱av| 欧美gayvideo| 亚洲一区久久久| 神马午夜伦理不卡| 亚洲国产精品va在线看黑人| 国产精品老女人| 久久久综合视频| 免费看污黄网站| 999久久久国产精品| 亚洲伊人久久综合| 久久香蕉av| 亚洲精品av在线| 伦av综合一区| 国产精品久久夜| 国产一级片中文字幕| 欧美涩涩网站| 久久久久久久久一区| 久久夜夜操妹子| 精品国产欧美一区二区三区成人| 一级黄色片网站| 亚洲图片欧美色图| 人妻精品久久久久中文字幕| 美国一区二区三区在线播放| 制服国产精品| 精品欠久久久中文字幕加勒比| 欧美在线欧美在线| 午夜视频在线观看网站| 日韩欧美亚洲另类制服综合在线| 日韩精品一区二区三| 国产亚洲自拍一区| 日韩精品aaa| 午夜一区不卡| 手机看片日韩国产| 欧美一级一片| 成人免费淫片aa视频免费| 丁香花在线电影小说观看| 一区二区日韩精品| 亚洲第一页综合| 日本韩国一区二区| 欧美日韩精品在线观看视频| 久久久亚洲高清| 中文字幕在线视频一区二区| 国产亚洲综合精品| 免费观看国产视频在线| 免费国产自久久久久三四区久久| 成人午夜在线影院| 欧美成人精品一区二区男人小说| 久久夜色精品国产| 黄色片免费在线| 亚洲第一黄色网| 91麻豆国产在线| 色婷婷久久久综合中文字幕| 欧美三级 欧美一级| 国产欧美日韩亚州综合| 日本一卡二卡在线| 韩日欧美一区二区三区| 97在线播放视频| 狠狠色综合网| 一本一生久久a久久精品综合蜜| 青青草原在线亚洲| 爱情岛论坛亚洲入口| 中文字幕成人| 国产精品入口尤物| 自拍视频在线看| 97精品久久久| 少妇视频在线| 乱亲女秽乱长久久久| 草碰在线视频| 亚洲男人7777| 污视频软件在线观看| 日韩一级大片在线观看| 中文字幕在线观看第二页| 色婷婷狠狠综合| 日韩成人免费在线视频| 一区二区三区四区av| 欧美在线视频第一页| 亚洲欧洲日韩女同| 人与嘼交av免费| 久久久久久99精品| asian性开放少妇pics| 成人免费观看av| 国产在线观看免费播放| 国产自产高清不卡| 欧美在线a视频| 精品一区二区免费视频| 亚洲美女性囗交| 蜜桃精品在线观看| 污污网站免费看| 捆绑调教美女网站视频一区| 久久婷婷综合色| 久久99久久99精品免视看婷婷| 在线观看日本一区二区| 精品一区二区三区在线播放视频| 9l视频白拍9色9l视频| 美女在线一区二区| 亚洲欧美偷拍另类| 国内久久精品视频| 在线观看一区二区三区视频| 国产sm精品调教视频网站| 中国特级黄色片| 成人一区二区三区视频在线观看 | 中文文字幕一区二区三三| 91久久香蕉国产日韩欧美9色| 无码人妻精品一区二区三区9厂| 色婷婷av一区二区三区gif| 亚洲色成人www永久网站| 欧美视频第二页| 国产精品久久久久久久久久久久久久久久久久 | 日韩少妇高潮抽搐| 精品国产精品三级精品av网址| 亚洲黄色小说图片| 在线观看91精品国产入口| 91亚洲欧美激情| 日韩一级成人av| 天天操天天干天天干| 亚洲男人天堂手机在线| 69久久夜色| 欧美精品在线极品| 成年女人在线看片| 清纯唯美亚洲激情| 国产欧美自拍| 91久色国产| 亚洲成人一品| 一区二区三区国| 韩国欧美一区| 久久综合久久色| 国产伦精一区二区三区| 亚洲熟女乱综合一区二区三区| 久久久久久一二三区| 国产精品av久久久久久无| 亚洲婷婷综合久久一本伊一区| 久久亚洲AV无码| 91久久精品一区二区三| 国产美女免费看| 日韩激情片免费| 3d成人动漫在线| 68精品国产免费久久久久久婷婷| av免费在线一区| 国产精品久久亚洲7777| 菠萝蜜一区二区| r级无码视频在线观看| 日韩av网站在线观看| 丝袜熟女一区二区三区| 欧美激情在线免费观看| 日本少妇性生活| 91精品国产色综合久久ai换脸 | 在线亚洲国产精品网| 青春草视频在线| 国产免费一区视频观看免费| 精品按摩偷拍| 国产日产欧美一区二区| 久久国产主播| 无码国产69精品久久久久网站 | 日韩新的三级电影| 99精品国产高清在线观看| 欧美三级情趣内衣| 成人午夜精品久久久久久久蜜臀| 久久99精品国产91久久来源| 波多野结衣办公室33分钟| 亚洲综合久久久| 91麻豆成人精品国产免费网站| 亚洲天堂2020| 国产v日韩v欧美v| 99在线观看视频网站| 久久综合电影| 另类小说第一页| 久久综合av免费| 日本在线视频免费观看| 日韩一区二区三区四区五区六区| 成人在线观看黄色| 欧美中文字幕视频在线观看| 8848成人影院| 中文字幕精品在线播放| 开心九九激情九九欧美日韩精美视频电影| 一级国产黄色片| 午夜视频一区二区| 亚洲va久久久噜噜噜无码久久| 久久精品91久久久久久再现| 成人亚洲综合| 少妇特黄a一区二区三区| 欧美专区在线| 亚洲一级中文字幕| 色先锋久久av资源部| 天堂在线中文字幕| 97在线视频精品| 美女午夜精品| 久久久久久久久久久视频| 成人在线视频一区| 久久久全国免费视频| 精品日本一线二线三线不卡| 美女黄视频在线观看| 91精品免费视频| 午夜久久福利| 亚洲最大视频网| 亚洲成人免费视| 污视频网站免费观看| 欧美在线观看视频| 亚洲国产合集| 亚洲 中文字幕 日韩 无码| 久久免费精品国产久精品久久久久| 亚洲另类在线观看| 亚洲人成啪啪网站| 日本综合视频| 在线观看精品视频| 国产激情视频一区二区三区欧美 | 色综合色狠狠综合色| 国产永久免费高清在线观看| 国产精品普通话| 欧美在线播放| 好吊日免费视频| 欧美性受极品xxxx喷水| 欧洲美女少妇精品| 国产精品v欧美精品∨日韩| 99精品国产在热久久婷婷| 熟女俱乐部一区二区| 欧美影院一区二区| 中文在线字幕免费观看| 国产伦精品一区二区三区免| 亚洲一区视频| 污污视频网站在线免费观看| 欧美一区二区视频观看视频| 黑人精品视频| 日本最新一区二区三区视频观看| 激情文学综合丁香| 国产在线观看免费视频今夜| 亚洲免费人成在线视频观看| 伊人久久一区| 热99这里只有精品| 欧美激情在线观看视频免费| 国产极品久久久| 91av在线影院| 91久久夜色精品国产按摩| 岛国精品一区二区三区| 欧美综合欧美视频| 丝袜在线视频| 色一情一乱一伦一区二区三欧美| 国产乱淫av一区二区三区| 欧美性猛交bbbbb精品| 久久久精品国产| 免费欧美激情| 中国极品少妇xxxx|