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

項目中發現了一個新的玩意WebAsyncTask

開發 項目管理
異步請求的處理。除了異步請求,一般上我們用的比較多的應該是異步調用。通常在開發過程中,會遇到一個方法是和實際業務無關的,沒有緊密性的。比如記錄日志信息等業務。

[[403136]]

本文轉載自微信公眾號「六脈神劍的程序人生」,作者六脈神劍小六六。轉載本文請聯系六脈神劍的程序人生公眾號。

絮叨

剛好在讀項目代碼的時候,發現了WebAsyncTask這個新玩意,給大家來科普科普,不是那么的深入,不喜勿噴!

 

SpringBoot中同異步調用的使用

異步請求的處理。除了異步請求,一般上我們用的比較多的應該是異步調用。通常在開發過程中,會遇到一個方法是和實際業務無關的,沒有緊密性的。比如記錄日志信息等業務。這個時候正常就是啟一個新線程去做一些業務處理,讓主線程異步的執行其他業務。

  • 同步請求

  • 異步請求

SprinBoot中@Async異步方法

異步的好處是,可以提高程序吞吐量,一個任務,讓耗時的異步處理,并繼續同步處理后面的任務,異步任務可以返回結果,拿到結果后可結合同步處理過程中的變量一起處理計算

具體的使用

在Spring中,基于@Async標注的方法,稱之為異步方法;這些方法將在執行的時候,將會在獨立的線程中被執行,調用者無需等待它的完成,即可繼續其他的操作。

自定義線程池異步調用

配置@EnableAsync使@Async生效

  1. @SpringBootApplication 
  2. @EnableAsync 
  3. public class Application { 
  4.   
  5.  public static void main(String[] args) { 
  6.   SpringApplication.run(Application.class, args); 
  7.  } 
  8.   

自定義線程池

  1. @Component 
  2. @Scope  //單例 
  3. public class MyExecutePoll { 
  4.   
  5.     @Bean 
  6.     public Executor myAsyncPool() { 
  7.         ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); 
  8.         //核心線程池大小 
  9.         executor.setCorePoolSize(20); 
  10.         //最大線程數 
  11.         executor.setMaxPoolSize(40); 
  12.         //隊列容量 
  13.         executor.setQueueCapacity(50); 
  14.         // 活躍時間 
  15.         executor.setKeepAliveSeconds(300); 
  16.         // 線程名字前綴 
  17.         executor.setThreadNamePrefix("MyExecutor-"); 
  18.         //設置線程池關閉的時候等待所有任務都完成再繼續銷毀其他的Bean,使異步線程的銷毀優先于Redis等其他處理報錯 
  19.         executor.setWaitForTasksToCompleteOnShutdown(true); 
  20.         //設置線程池中任務的等待時間,如果超過這個時候還沒有銷毀就強制銷毀,以確保應用最后能夠被關閉,而不是阻塞住 
  21.         executor.setAwaitTerminationSeconds(60); 
  22.         // setRejectedExecutionHandler:當pool已經達到max size的時候,如何處理新任務 
  23.         // CallerRunsPolicy:不在新線程中執行任務,而是由調用者所在的線程來執行 
  24.         executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); 
  25.         executor.initialize(); 
  26.         return executor; 
  27.     } 
  28.   

使用@Async

  1. @Async("myAsyncPool")   //@Async使用默認的線程 
  2. public Future<String> doTask() throws Exception { 
  3.     //業務處理   使用Future返回異步調用結果 
  4.     return new AsyncResult<>("任務一完成"); 

在Spring中運用 Async注解 需要注意幾點:

  • AsyncTest.java,測試類,調用異步任務,同時執行同步方法
  • OrderService.java,異步任務類,提供異步方法
  • AsyncThreadPoolConfig.java,異步任務線程池配置類,配置異步任務運行的線程池大小等

基于Spring實現異步請求

Spring可以通過Callable或者WebAsyncTask等方式實現異步請求, 我們來看看,這2種實現方式!

Callable

Callable是為了異步生成返回值提供基本的支持。簡單來說就是一個請求進來,如果你使用了Callable,在沒有得到返回數據之前,DispatcherServlet和所有Filter就會退出Servlet容器線程,但響應保持打開狀態,一旦返回數據有了,這個DispatcherServlet就會被再次調用并且處理,以異步產生的方式,向請求端返回值。這么做的好處就是請求不會長時間占用服務連接池,提高服務器的吞吐量。

  1. @GetMapping("/callable"
  2.     public Callable<String> testCallable() throws InterruptedException { 
  3.         log.info("主線程開始!"); 
  4.         Callable<String> result = new Callable<String>() { 
  5.  
  6.             @Override 
  7.             public String call() throws Exception { 
  8.                 log.info("副線程開始!"); 
  9.                 Thread.sleep(1000); 
  10.                 log.info("副線程結束!"); 
  11.                 return "SUCCESS"
  12.             } 
  13.  
  14.         }; 
  15.         log.info("主線程結束!"); 
  16.         return result; 
  17.     } 

輸出結果

  1. 主線程開始! 
  2.  
  3. 主線程結束! 
  4.  
  5. 副線程開始! 
  6.  
  7. 副線程結束! 

WebAsyncTask

一個請求到服務上,是用的web容器的線程接收的

我們可以使用WebAsyncTask將這個請求分發給一個新的線程去執行,容器的線程可以去接收其他請求的處理。一旦WebAsyncTask返回數據有了,就會被再次調用并且處理,以異步產生的方式,向請求端返回值,但是其實我覺得前端的請求rt并不會說變短。

  1. /** 
  2.     * 查詢 
  3.     */ 
  4.    @RequestMapping(method = RequestMethod.GET, value = "/aysncTask/{testId}"
  5.    @ResponseStatus(HttpStatus.OK) 
  6.    public WebAsyncTask<Response> aysncTask(@PathVariable("testId") String testId) { 
  7.        System.out.println(String.format("/aysncTask/%s 被調用 thread id is: %s", testId,Thread.currentThread().getName())); 
  8.        Callable<Response> callable = () -> { 
  9.            Thread.sleep(1000L); 
  10.            Response response = new Response(true,"異步執行成功"); 
  11.            System.out.println(String.format("/aysncTask/%s 被調用 thread id is: %s", testId,Thread.currentThread().getName())); 
  12.            return response; 
  13.        }; 
  14.        return new WebAsyncTask<Response>(callable); 
  15.    } 

控制臺打印如下:在執行業務邏輯之前的線程和具體處理業務邏輯的線程不是同一個,達到了我們的目的。async-customize-1這個前綴是我們自定義的下邊會說

  1. /aysncTask/12348567676 被調用 thread id is: http-nio-8084-exec-1 
  2. /aysncTask/12348567676 被調用 thread id is: async-customize-1 

其實WebAsyncTask比起Callable是有以下幾個優點的

官方有這么一句話,截圖給你:

如果我們需要超時處理的回調或者錯誤處理的回調,我們可以使用WebAsyncTask代替Callable

實際使用中,我并不建議直接使用Callable ,而是使用Spring提供的WebAsyncTask 代替,它包裝了Callable,功能更強大些

總結

 

其實本文就是給大家科普下,一些異步的用法,不至于說看到人家這么用很蒙b,多線程的東西還是優點東西的,大家一起學習。

 

責任編輯:武曉燕 來源: 六脈神劍的程序人生
相關推薦

2021-06-17 10:01:54

APT活動Victory 后門惡意軟件

2021-01-26 11:16:12

漏洞網絡安全網絡攻擊

2022-04-28 09:41:29

Linux 操作系統漏洞Microsoft

2021-10-29 11:45:26

Python代碼Python 3.

2025-06-18 08:16:26

2025-05-19 10:04:48

2023-02-26 01:02:22

2021-04-22 07:47:47

JavaJDKMYSQL

2022-11-30 09:18:51

JavaMyBatisMQ

2021-12-29 19:20:41

數據GitHub服務器

2021-06-09 18:59:48

AI

2021-06-09 14:45:50

安全漏洞攻擊漏洞

2021-03-06 13:31:52

網絡釣魚惡意郵件攻擊

2024-05-20 08:25:55

2019-01-14 11:10:43

機器學習人工智能計算機

2020-06-09 08:05:11

Android 代碼操作系統

2023-05-17 00:22:15

2021-03-08 10:58:03

漏洞Microsoft E微軟

2021-04-28 14:31:35

Dubbo接口日志

2020-06-16 08:39:35

JavaScript圖像處理庫
點贊
收藏

51CTO技術棧公眾號

视频一区国产视频| 超碰在线超碰在线| 国产极品视频在线观看| 人妖欧美1区| 日韩精品永久网址| 狠狠色狠色综合曰曰| 久久久成人精品| av免费网站观看| 日本人妻丰满熟妇久久久久久| 五月天综合网站| 在线观看成人小视频| 久久精品国产美女| 国产成人无码一区二区三区在线 | 欧美国产日本高清在线 | 中文字幕一区二区三区精品| 成人羞羞在线观看网站| 欧美丝袜美女中出在线| 国产欧美精品一区二区三区| 草视频在线观看| 亚洲一区二区电影| 亚洲高清一区二区三区| 国产精品久久波多野结衣| 欧美日韩偷拍视频| 狠狠色狠狠色综合婷婷tag| 日韩欧美成人精品| 精品久久久无码人妻字幂| 精品国产999久久久免费| 欧美搞黄网站| 精品国产乱码91久久久久久网站| 激情五月婷婷六月| 三级视频在线看| 国产欧美在线| 亚洲午夜未满十八勿入免费观看全集| 噼里啪啦国语在线观看免费版高清版| 国产精品视频二区三区| 日本va欧美va欧美va精品| 色一情一乱一区二区| 看看黄色一级片| 99热在线观看免费精品| 蜜臀一区二区三区精品免费视频| 天天干,夜夜爽| 精品亚洲成a人| 欧美成人免费全部观看天天性色| 精品国产免费久久久久久婷婷| 欧美人动性xxxxz0oz| 国产精品美女一区二区| 91色视频在线导航| 久久久精品91| 色愁久久久久久| 欧美优质美女网站| 狠狠精品干练久久久无码中文字幕 | 亚洲一区二区三区乱码aⅴ蜜桃女| 乱h高h女3p含苞待放| 北条麻妃一区二区三区在线观看| 欧美性20hd另类| 日本中文字幕网址| 在线免费看黄网站| 成人性生交大片免费看视频在线| 欧美专区在线视频| 国产jizz18女人高潮| 国产精品天天看天天狠| 色94色欧美sute亚洲线路一ni| 欧美爱爱视频网站| 性xxxx视频| 激情文学综合丁香| 91亚洲精品久久久久久久久久久久 | 黄色国产精品| 夜夜嗨av一区二区三区四区| 久草福利在线观看| 黄色精品视频| 精品久久久久久| 99精品视频网站| 国产三区视频在线观看| 久久久综合激的五月天| 日韩av电影院| 免费一级片视频| 日本欧美国产| 久久精品视频网站| 久久久久亚洲AV| 国产亚洲综合精品| 国产精品狠色婷| 色婷婷av国产精品| 免费一级欧美片在线播放| 欧美高清在线播放| 日韩欧美激情视频| 日韩专区在线视频| 欧美激情精品久久久久久蜜臀| 日本一区二区免费在线观看| 午夜激情久久| 亚洲欧美国产精品久久久久久久| 美女日批在线观看| 免费福利视频一区| 精品国精品国产尤物美女| 91欧美一区二区三区| 精品69视频一区二区三区| 高跟丝袜一区二区三区| 日韩一级片播放| 激情综合五月| 欧美老年两性高潮| 日本在线一二三区| 成人深夜福利| 欧美日韩国产综合一区二区三区| 欧美精品第三页| 性欧美1819sex性高清| 福利一区视频在线观看| 国产精品自拍视频在线| 国产精品zjzjzj在线观看| 中文字幕在线观看亚洲| 精品人妻无码一区| 国产一区二区观看| 欧美激情视频网址| 一区二区视频网站| 免费看日韩精品| 国产精品美女呻吟| 一本一道精品欧美中文字幕| 久久精品久久精品| 成人黄色片网站| av加勒比在线| 亚洲国产高清aⅴ视频| 日韩精品久久久免费观看| 欧美91精品久久久久国产性生爱| 久久精品一区二区三区不卡牛牛| 国产在线拍揄自揄拍无码| 日本片在线看| 精品日本高清在线播放| 日本黄色一级网站| 色综合狠狠操| 国产激情综合五月久久| 最近国语视频在线观看免费播放| 蜜臀av性久久久久蜜臀aⅴ四虎 | 一本色道久久综合狠狠躁的番外| 亚洲欧美www| 国产精品suv一区二区69| 99国产一区| 国产精品高精视频免费| 瑟瑟在线观看| 国产精品伦一区二区三级视频| 俄罗斯av网站| 精品三级在线| 在线电影欧美日韩一区二区私密| 亚洲伊人成人网| av在线一区二区三区| 日本在线观看一区二区三区| 国产拍在线视频| 欧美色图在线观看| 国产精品日日摸夜夜爽| 网曝91综合精品门事件在线| 久久久久久这里只有精品| 丁香社区五月天| 国产精品资源站在线| 精品日韩欧美| 免费av网站在线看| 福利视频一区二区| 91精品人妻一区二区三区蜜桃欧美| 成人羞羞网站入口免费| 国产精品免费久久久| 国产一级片在线播放| 一区二区三区在线免费播放| 四虎永久在线精品无码视频| 伊人精品一区| 国产精品第一页在线| 都市激情一区| 91精品国产综合久久国产大片| 中文字幕5566| 欧美日韩18| 国产精品色视频| 日本中文字幕在线看| 精品久久久久久中文字幕一区奶水| 日本黄色录像片| 亚洲精品国产首次亮相| 91牛牛免费视频| 青春草在线视频| 日韩精品极品视频| 日本少妇高清视频| 成人午夜看片网址| 欧美三级一级片| 91精品国产自产精品男人的天堂| 午夜精品理论片| 亚洲AV午夜精品| 国产精品福利影院| 国产xxxxx视频| 日本一区二区在线看| 91中文在线观看| 91超碰国产在线| 欧美刺激午夜性久久久久久久| 国产亚洲精品精品精品| 丝袜美腿高跟呻吟高潮一区| 亚洲精品在线观看免费| 欧美成人黑人| 精品国产一区二区三区四区在线观看| 无码人妻久久一区二区三区 | 日韩在线第一区| 日韩精品中文字幕吗一区二区| 中文字幕欧美亚洲| 性生活视频软件| 日韩欧美在线字幕| 天天综合天天做| 国产亚洲污的网站| 三级4级全黄60分钟| 欧美高清视频手机在在线| 国产精品久久久久久一区二区 | 亚洲影视资源网| 日本特黄在线观看| 久久福利精品| 欧美激情论坛| 亚洲成人激情社区| 一区二区欧美日韩视频| 亚洲精品免费在线观看视频| 在线看日韩精品电影| 久久久久97国产| 国产精品传媒入口麻豆| 久久久久国产精品区片区无码| 久久精品国产亚洲一区二区三区| 免费观看日韩毛片| 午夜欧美精品| 影音先锋在线亚洲| 日韩av综合| 国产精品青草久久久久福利99| 国产探花视频在线观看| 亚洲а∨天堂久久精品9966| 亚洲香蕉在线视频| 一本一本久久a久久精品综合麻豆| 欧美图片一区二区| 蜜桃视频免费观看一区| 欧美变态另类刺激| 国内精品美女在线观看| 三级网在线观看| 青青草91久久久久久久久| 精品日本一区二区| 大型av综合网站| 动漫一区二区在线| 在线免费av资源| 最新亚洲国产精品| 久久经典视频| 亚洲乱亚洲乱妇无码| 日本高清视频网站| 亚洲成人激情图| 精品成人无码久久久久久| 亚洲成人在线网站| 欧美另类视频在线观看| 亚洲精品视频在线观看免费| 在线免费观看a级片| 日韩精品色哟哟| 久久久久久久久久福利| 久久国产福利| 日韩手机在线观看视频| 日韩中文字幕亚洲一区二区va在线| 18禁免费无码无遮挡不卡网站| 亚洲精品1234| 一区二区三区四区在线视频| 成人免费在线播放| 亚洲国产精品www| 日韩欧美电影| 中国人体摄影一区二区三区| 亚洲国产不卡| 免费日韩在线观看| 亚洲国产裸拍裸体视频在线观看乱了中文 | 午夜18视频在线观看| 亚洲精美色品网站| 一二三四区视频| 欧美精品在线视频| av男人天堂av| 亚洲成人免费在线视频| 午夜一区在线观看| 亚洲男人的天堂网站| av中文天堂在线| 亚洲黄色在线看| 头脑特工队2免费完整版在线观看| 欧美一区二区三区在线视频| 国产福利资源在线| 亚洲国产成人91精品| 日韩电影免费| 日韩在线观看免费高清| 超碰人人在线| 视频在线一区二区| 制服丝袜在线播放| www.欧美精品| 影院在线观看全集免费观看| 国内揄拍国内精品| 99视频免费在线观看| 欧美激情乱人伦| 日本综合字幕| 91在线观看免费高清| 第一区第二区在线| 日韩精品一线二线三线| 一区二区影院| 黄色高清视频网站| 亚洲二区在线| 日本阿v视频在线观看| 最新国产精品| 中国丰满人妻videoshd| 久久se这里有精品| 911福利视频| www.欧美日韩国产在线| 毛片aaaaaa| 亚洲高清免费视频| 中文字幕av网站| 欧美精品一区二区三| chinese偷拍一区二区三区| 欧美激情喷水视频| 久久精品黄色| 波多野结衣一区二区三区在线观看| 高清在线一区二区| 91久久中文字幕| 要久久爱电视剧全集完整观看| 91xxx视频| 日精品一区二区| 50一60岁老妇女毛片| 国产精品国产成人国产三级| 成人午夜视频在线播放| 狠狠干狠狠久久| 国产偷人妻精品一区二区在线| 在线播放91灌醉迷j高跟美女| 国产又粗又猛又黄| 在线国产亚洲欧美| 国产 欧美 自拍| 亚洲国产成人久久综合一区| 欧美极品视频| 国产精品国模在线| 羞羞色国产精品网站| 国产成人一二三区| 精品系列免费在线观看| 日本少妇xxxxx| 日韩欧美精品在线观看| 欧美一级一区二区三区| 欧美成人性生活| 日韩美香港a一级毛片| 91情侣在线视频| 农村少妇一区二区三区四区五区| 一区二区三区四区免费观看| 全国精品久久少妇| wwwwxxxx国产| 欧美午夜丰满在线18影院| 人妻一区二区三区免费| 欧美激情综合色| 亚洲精品一区在线| av动漫在线免费观看| 国产乱码精品一区二区三区五月婷| 日本黄色激情视频| 欧美日韩在线直播| 在线视频1区2区| 国产欧美日韩中文字幕| 亚洲天堂中文字幕在线观看| 久久久成人精品一区二区三区| 久久电影网站中文字幕| 日本一级特级毛片视频| 五月综合激情婷婷六月色窝| 日韩精品在线一区二区三区| 日韩欧美在线观看一区二区三区| 色综合久久久久久| 9.1国产丝袜在线观看| 99久久999| 美女被啪啪一区二区| 一本精品一区二区三区| 99九九99九九九99九他书对| 亚洲欧洲国产日本综合| 久久露脸国语精品国产91| 亚洲精品mp4| 国产日韩另类视频一区| 亚洲欧美日韩综合一区| 激情综合色综合久久综合| 欧美激情图片小说| 精品盗摄一区二区三区| 蜜桃麻豆av在线| 亚洲伊人第一页| 欧美色综合网| 特级西西人体wwwww| 日本韩国精品在线| 午夜视频在线看| 成人在线资源网址| 免费日韩视频| 久久99久久99精品免费看小说| 欧美日韩中文字幕在线| 国产视频精选在线| 92看片淫黄大片看国产片| 影音国产精品| 亚洲av无码国产精品麻豆天美| 亚洲成人激情综合网| 青青草在线免费视频| 国产在线观看精品| 国产精品大片| 黄色av免费播放| 欧美成人a∨高清免费观看| av资源亚洲| 久久国产手机看片| 麻豆精品视频在线观看免费 | 东热在线免费视频| 91视频免费在线观看| 日韩精品免费专区| 免费一级黄色大片| 夜夜嗨av一区二区三区四区| 日日夜夜精品视频| 国产自偷自偷免费一区| 亚洲精品一二三四区| 女人天堂在线| 91传媒在线免费观看| 日本美女一区二区| 国产真人真事毛片| 日韩有码视频在线| 少妇精品久久久|