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

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

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

瀏覽:130日期: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久久,三上悠亚国产精品一区二区三区
99精品美女| 国产亚洲久久| 麻豆一区二区99久久久久| 国产视频网站一区二区三区| 亚洲精品在线a| 亚洲色图网站| 免费在线视频一区| 久久亚洲欧美| 日韩在线观看一区二区三区| 91欧美极品| 欧美aa在线视频| 97精品在线| 999久久久免费精品国产| 亚洲成人国产| 中文亚洲免费| 亚洲精品欧洲| 国产精品www994| 精品久久久久中文字幕小说| 天堂√中文最新版在线| 精品中文一区| 中文字幕日本一区二区| 日韩一区二区三区高清在线观看 | 日韩高清成人在线| 久久高清免费| 日韩中文字幕91| 日韩国产91| 电影91久久久| 欧洲激情综合| 日韩福利视频导航| 国精品产品一区| 欧美一区二区性| 中文字幕成人| 麻豆91小视频| 亚洲国产一区二区在线观看 | 国产亚洲精品v| 日韩激情一区二区| 久久久久观看| 激情久久久久久| 日韩精品视频一区二区三区| 精品一二三区| 中日韩男男gay无套| 国产乱码精品一区二区亚洲| 最近高清中文在线字幕在线观看1| 午夜国产精品视频免费体验区| 亚洲97av| 日韩国产欧美| 亚洲不卡视频| 精品免费av在线| 免费久久99精品国产自在现线| 国产精品一区二区三区av| 日韩专区精品| 日本aⅴ亚洲精品中文乱码| 国产成人久久| 亚洲精品字幕| 亚洲最新无码中文字幕久久| 快she精品国产999| 福利片在线一区二区| 美女精品网站| 理论片午夜视频在线观看| 综合国产精品| 九九精品调教| 国产欧美丝祙| 模特精品在线| 精品视频自拍| 中文字幕一区二区精品区| 日韩理论视频| 久久激情综合网| 日韩视频中文| 精品国产麻豆| 亚洲欧洲美洲国产香蕉| 日韩在线观看一区| 日韩精选在线| 黄色成人精品网站| 粉嫩av一区二区三区四区五区| 亚洲丝袜啪啪| 亚洲福利精品| 精品一区二区三区在线观看视频 | 欧美特黄视频| 国产一区国产二区国产三区| 日韩1区2区日韩1区2区| 99视频精品| 亚洲欧洲高清| 国产精品tv| 美女久久网站| 激情欧美一区二区三区| 国产高潮在线| 国产精品丝袜在线播放| 亚洲深夜福利在线观看| 欧美日韩国产在线观看网站| 久久免费精品| 国产欧美亚洲精品a| 亚洲精品美女91| 日韩专区欧美专区| 精品一区三区| 久久国产电影| se01亚洲视频| 正在播放日韩精品| 久久久久伊人| 国产精品主播| 奇米狠狠一区二区三区| 免费观看在线综合| 精品1区2区3区4区| 99精品电影| 人人精品亚洲| 日韩av有码| 丰满少妇一区| 精品亚洲精品| 精品免费av一区二区三区| 国产精品亚洲综合久久| 欧美色综合网| 久久激情综合网| 国产欧美日韩在线观看视频| 亚洲va久久| 日韩国产91| 日韩精品一级| 日韩福利视频网| 国产日韩亚洲| 国产精品黄色| 国产精品久久久久久妇女 | 久久一区国产| 麻豆传媒一区二区三区| 久久精品一区二区三区中文字幕| 日本国产亚洲| 久久激情综合网| 麻豆中文一区二区| 色欧美自拍视频| 另类中文字幕国产精品| 成人久久久久| 午夜精品亚洲| 久久国产88| 日本亚洲视频在线| 日韩精选在线| 国产乱人伦精品一区| 麻豆国产精品| 日韩成人高清| 91九色精品国产一区二区| 欧美网站在线| 亚洲欧美日韩国产| 日本不卡视频一二三区| 国产黄色一区| 成人小电影网站| 亚洲成人精选| 欧美91在线| 日本国产精品| 六月天综合网| 日本视频中文字幕一区二区三区| 欧美日韩一区二区三区在线电影| 国产乱码精品一区二区三区亚洲人| 老司机精品视频在线播放| 综合日韩av| 国产精品社区| 国产日韩一区二区三区在线| 丁香婷婷久久| 亚洲成人av观看| 尤物精品在线| 青青在线精品| 国产成人久久精品一区二区三区| 久久久久.com| 亚洲精品乱码久久久久久蜜桃麻豆 | 91一区二区| 国产99久久| 一本一道久久a久久| 久久精品国产福利| 欧美福利在线| 日本精品在线播放| 超碰在线99| 免费国产自线拍一欧美视频| 国产亚洲电影| 日韩国产一区二区三区| 免费在线观看成人| 国产精品毛片久久久| 日韩精品永久网址| 亚洲涩涩av| 国产精品久久久久久久久久10秀| 欧美日韩国产传媒| 日本a级不卡| 色综合www| 一区二区三区四区在线观看国产日韩| 美女高潮久久久| 另类激情亚洲| 中文在线а√天堂| 亚洲乱码视频| 亚洲午夜天堂| 91精品国产经典在线观看| 少妇精品导航| 国产精品午夜一区二区三区| 国产韩日影视精品| 美腿丝袜亚洲一区| 日韩在线视频精品| 欧美久久久网站| 九色精品91| 久久久精品区| 日韩一区二区三区精品视频第3页| www成人在线视频| 国产精区一区二区| 99国产精品久久久久久久成人热| 美女久久99| 日韩国产精品久久久| 不卡在线一区| 日本精品黄色|