日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

SpringBoot中使用多線程的方法示例

瀏覽:133日期:2023-03-20 14:55:33
一、介紹

Spring是通過任務執行器(TaskExecutor)來實現多線程和并發編程,使用Spring提供的ThreadPoolTaskExecutor來創建一個基于線城池的TaskExecutor。在使用線程池的大多數情況下都是異步非阻塞的。節省更多的時間,提高效率。

工作原理

SpringBoot中使用多線程的方法示例

當主線程中調用execute接口提交執行任務時:則執行以下步驟:注意:線程池初始時,是空的。

如果當前線程數<corePoolSize,如果是則創建新的線程執行該任務 如果當前線程數>=corePoolSize,則將任務存入BlockingQueue 如果阻塞隊列已滿,且當前線程數<maximumPoolSize,則新建線程執行該任務。 如果阻塞隊列已滿,且當前線程數>=maximumPoolSize,則拋出異常RejectedExecutionException,告訴調用者無法再接受任務了。

在Springboot中對其進行了簡化處理,只需要配置一個類型為java.util.concurrent.TaskExecutor或其子類的bean,并在配置類或直接在程序入口類上聲明注解@EnableAsync,即可可以開啟異步任務。

調用也簡單,在由Spring管理的對象的方法上標注注解@Async,聲明是異步任務,顯式調用即可生效。

二、聲明

讓配置類實現AsyncConfigurer接口,并重寫getAsyncExecutor方法,并返回一個ThreasPoolTaskExecutor,就可以獲取一個基于線程池的TaskExecutor使用注解@EnableAsync開啟異步,會自動掃描

@Configuration@EnableAsyncpublic class ThreadConfig implements AsyncConfigurer { @Override public Executor getAsyncExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(5); executor.setMaxPoolSize(15); executor.setQueueCapacity(25); executor.initialize(); return executor; } @Override public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() { return null; }}三、調用

通過@Async注解表明該方法是異步方法,如果注解在類上,那表明這個類里面的所有方法都是異步的

@Servicepublic class AsyncTaskService { @Async public void executeAsyncTask(int i) { System.out.println('線程' + Thread.currentThread().getName() + ' 執行異步任務:' + i); }}四、進階

有時候我們不止希望異步執行任務,還希望任務執行完成后會有一個返回值,在java中提供了Future泛型接口,用來接收任務執行結果,springboot也提供了此類支持,使用實現了ListenableFuture接口的類如AsyncResult來作為返回值的載體。比如上例中,我們希望返回一個類型為String類型的值,可以將返回值改造為:

@Async public Future<String> executeAsyncTaskWithResult2(int i) { System.out.println('線程' + Thread.currentThread().getName() + ' 開始執行異步任務' + i); try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println('線程' + Thread.currentThread().getName() + ' 結束執行異步任務' + i); return new AsyncResult<>('線程' + Thread.currentThread().getName() + ' 執行異步任務:' + i); }

調用返回值:get()是阻塞式,等待當前線程完成才返回值

public void threadTest() { try { List<Future> futures = new ArrayList<>(); for (int i = 0; i < 20; i++) {futures.add(asyncTaskService.executeAsyncTaskWithResult2(i)); } // 獲取值。get是阻塞式,等待當前線程完成才返回值 for (Future<String> future : futures) {System.out.println('返回結果:' + future.get()); } } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } }補充

實際上,@Async還有一個參數,通過Bean名稱來指定調用的線程池-比如上例中設置的線程池參數不滿足業務需求,可以另外定義合適的線程池,調用時指明使用這個線程池-缺省時springboot會優先使用名稱為’taskExecutor’的線程池,如果沒有找到,才會使用其他類型為TaskExecutor或其子類的線程池。

到此這篇關于SpringBoot中使用多線程的方法示例的文章就介紹到這了,更多相關SpringBoot使用多線程內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产成人精品亚洲线观看| 国产欧美日韩一级| 欧美一级二级三级视频| 综合干狼人综合首页| japanese国产精品| 亚洲免费成人| 99日韩精品| 国产毛片久久| 亚洲人亚洲人色久| 91免费精品国偷自产在线在线| 亚洲午夜久久| 日韩精品a在线观看91| 日韩精品欧美成人高清一区二区| 日韩1区2区3区| 国产精品观看| 国产在线观看www| 人人香蕉久久| 国产综合色产| 蜜臀va亚洲va欧美va天堂| 日韩**一区毛片| 久久99久久人婷婷精品综合| 色乱码一区二区三区网站| 亚洲天堂av影院| 香蕉精品视频在线观看| 蜜臀久久久久久久| 久久不卡日韩美女| 最近高清中文在线字幕在线观看1| 日韩黄色大片网站| 亚洲欧美日本视频在线观看| 天堂俺去俺来也www久久婷婷| 国产伦精品一区二区三区在线播放| 久久午夜影院| 久久久国产亚洲精品| 日本欧美在线看| 麻豆精品在线| 婷婷丁香综合| 国产伦精品一区二区三区千人斩| av高清一区| 亚洲日本在线观看视频| 久久女人天堂| 91精品福利| 国产日本久久| 国产91久久精品一区二区| 亚洲精选av| 福利一区和二区| 国产免费成人| 精品一区二区三区中文字幕| 神马日本精品| 免费不卡在线视频| 中文字幕一区久| 亚洲青青久久| 日本美女一区| 日本在线不卡视频一二三区| 国产在线看片免费视频在线观看| 男人的天堂久久精品| 久久精品网址| 香蕉成人久久| 精品国产精品国产偷麻豆| 国产亚洲在线观看| 黄色欧美在线| 亚洲免费专区| 欧美sss在线视频| 欧美日韩一区二区高清| 免费观看久久av| 国产精品jk白丝蜜臀av小说| 红桃视频国产一区| 久久久久亚洲精品中文字幕| 天堂va蜜桃一区二区三区| 色爱综合网欧美| 欧美日韩1区| 影音国产精品| 国产精品99一区二区三区| 亚洲色图国产| 日韩精品麻豆| 国产精品大片免费观看| 久久亚洲二区| 欧美色图国产精品| 国产精品亚洲欧美| 亚洲日本免费电影| 在线一区视频| 天堂中文在线播放| 麻豆中文一区二区| 日本一区福利在线| 视频一区中文字幕| 在线日韩中文| 日韩深夜视频| 另类欧美日韩国产在线| 婷婷久久免费视频| 美女久久一区| 黑丝一区二区三区| 人人香蕉久久| 色在线中文字幕| 国产精品一区二区精品| 蜜桃视频在线观看一区| 久久国产成人午夜av影院宅| 成人午夜网址| 麻豆一区二区在线| 国产精品久久久久久av公交车| 亚洲精品观看| 视频在线观看一区| 亚洲资源av| 国产精品88久久久久久| 日韩一区电影| 91欧美在线| 精品中国亚洲| 荡女精品导航| 精品国产a一区二区三区v免费| 日韩激情中文字幕| 中文字幕免费一区二区| 视频一区二区中文字幕| 国产精品社区| 六月天综合网| 久久av在线| 亚洲一区日韩| 国产农村妇女精品一二区| 亚洲一区二区三区四区五区午夜| 亚洲精品一区二区妖精| 欧美另类综合| 国产一级一区二区| 免费在线观看成人| 亚洲欧洲美洲国产香蕉| 久久xxxx精品视频| 美女国产一区| 深夜日韩欧美| 欧美一区久久| 国产精品伦一区二区| 国产欧美激情| 免费一级欧美片在线观看网站| 国产乱码精品一区二区三区四区 | 国产精品天天看天天狠| 7777精品| 国产精久久久| 国产第一亚洲| 黄色在线观看www| 日韩免费小视频| 久久亚洲在线| 欧美另类专区| 蜜桃一区二区三区在线观看| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲综合色婷婷在线观看| 亚洲精品在线a| 国产日韩一区二区三免费高清| 国产免费久久| 日韩国产一区二区| 在线一区免费观看| 日韩三级一区| 麻豆国产欧美日韩综合精品二区| 日韩a一区二区| 免费不卡中文字幕在线| 日韩精品一二三区| 国产高清亚洲| 成人看片网站| 中文字幕日韩亚洲| 精品视频高潮| 国产真实久久| 日韩极品在线观看| 麻豆视频在线观看免费网站黄| 亚洲一级高清| 日本v片在线高清不卡在线观看| 狠狠久久伊人| 黄色亚洲大片免费在线观看| 亚洲性视频在线| 国产精品99精品一区二区三区∴ | 日韩高清中文字幕一区二区| 亚洲精品电影| 欧美片网站免费| 色一区二区三区四区| 99精品99| 久久亚洲人体| 91久久视频| 国产精品任我爽爆在线播放| 日本免费久久| 蜜桃av一区| 精品美女视频| 夜夜嗨av一区二区三区网站四季av| 日韩精品欧美大片| 日韩天堂在线| 91精品福利观看| 久久九九电影| 欧美亚洲网站| 午夜国产欧美理论在线播放 | 国产欧美精品| 国产精品88久久久久久| 一区二区三区午夜视频| 精品视频一二| 喷白浆一区二区| 欧美国产美女| 日本国产亚洲| 国产精品av久久久久久麻豆网| 青草久久视频| 亚洲福利免费| 国产精品久久久久av蜜臀| 国产婷婷精品| av日韩中文| 日本视频一区二区| 久久精品青草| 麻豆久久一区二区| 亚洲欧美网站在线观看| 中文字幕在线视频网站| 欧美一级二区|