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

国产精品25p| 亚洲电影免费观看高清完整版在线| 国产免费一区二区| 成人av网站在线播放| 日本一区二区在线看| 51午夜精品国产| 欧美一区二区三区在线观看视频| 国产成人在线精品| 神马午夜精品91| 色婷婷狠狠五月综合天色拍| 欧美午夜精品一区二区蜜桃| 亚洲色成人www永久在线观看| 黄色在线免费观看大全| 国产伦精品一区二区三区免费迷 | 欧美高清视频| 99久久亚洲一区二区三区青草 | 久久国产精品免费一区二区三区| 狠狠操狠狠色综合网| 超碰免费在线公开| 男人久久精品| jlzzjlzz国产精品久久| 91中文字幕在线| 亚洲无码精品一区二区三区| 影音先锋亚洲电影| 久久综合亚洲社区| 亚洲色图第四色| 日韩欧美在线精品| 欧美成人激情免费网| www午夜视频| 台湾佬成人网| 欧美日韩久久久久| 成人性生活视频免费看| 婷婷av在线| 国产精品国产自产拍高清av | 三级在线观看| 懂色av一区二区三区蜜臀 | 一区二区三区亚洲视频| 日韩综合小视频| 欧美最猛性xxxxx亚洲精品| 久久99久久98精品免观看软件 | 国产精品沙发午睡系列| 欧美黑人猛交| 亚洲影院免费观看| 亚洲一区 在线播放| dj大片免费在线观看| 亚洲欧洲国产专区| 亚洲成人第一| 97在线观看免费观看高清 | 亚洲一二三四| 精品久久久久久| a级黄色一级片| h片在线观看视频免费免费| 亚洲影院在线观看| 成人在线国产视频| 2020国产在线| 婷婷久久综合九色综合绿巨人| aa视频在线播放| 成人一级福利| 色综合天天性综合| 国产精品igao| 日韩av黄色| 欧美一区二区三区小说| 日本黄色www| 国产精品久久久久av蜜臀| 精品粉嫩超白一线天av| 精品国产一区在线| 在线日本制服中文欧美| 亚洲天堂成人在线| 中文字幕91视频| 91精品秘密在线观看| 欧美精品电影在线| 国产 日韩 欧美 在线| 日韩高清中文字幕一区| 国产原创欧美精品| japanese国产| aaa国产一区| 日本中文不卡| 成黄免费在线| 亚洲一级二级在线| 日本精品免费在线观看| 国产91亚洲精品久久久| 日韩欧美一二三区| 添女人荫蒂视频| 成人三级视频| 久久韩剧网电视剧| 日韩视频免费观看高清| 日本欧美一区二区| 91在线无精精品一区二区| 欧日韩在线视频| 中文字幕第一区综合| 国产免费xxx| 三级在线观看视频| 欧美久久免费观看| 老熟妇精品一区二区三区| 国产精品一区二区99| 久久的精品视频| 欧美精品亚洲精品日韩精品| 久久精品国产一区二区三 | 亚洲一级片av| 日韩手机在线| 久久成人av网站| 无码人妻一区二区三区线| 国产一区日韩二区欧美三区| 蜜桃传媒一区二区| 亚洲资源一区| 在线视频综合导航| 精品人妻一区二区免费视频| 四季av一区二区三区免费观看| 亚州国产精品久久久| 91资源在线视频| 久久影院电视剧免费观看| 国产高潮呻吟久久久| 三上悠亚激情av一区二区三区 | 日韩 中文字幕| 91精品91| 国产精品偷伦免费视频观看的| 欧美特黄一级视频| 亚洲视频免费看| 天天天干夜夜夜操| 一区二区三区日本久久久| 久久99久国产精品黄毛片入口| 男人的天堂av网站| 91在线国产福利| 嫩草影院中文字幕| 国产精品久久久久久久久久辛辛 | 精品一区二区三区视频日产| 中中文字幕av在线| 欧美高清视频www夜色资源网| 3d动漫精品啪啪一区二区下载| 狠狠噜噜久久| 97人人澡人人爽| 国产高清一区二区三区视频 | 亚洲精品久久久久avwww潮水| 亚洲欧洲性图库| 一区二区三区视频网| 神马影视一区二区| 欧美在线性爱视频| 天堂中文字幕在线| 欧美日韩国产一区中文午夜| 91丝袜在线观看| 亚洲国产高清一区二区三区| 99在线视频播放| 99久久精品免费观看国产| 欧美二区三区91| 中日韩一级黄色片| 国产在线麻豆精品观看| 精品一区二区成人免费视频 | 少妇高潮惨叫久久久久| 免费高清成人在线| 亚洲欧美久久234| 久久99国产精品二区高清软件| 最近2019年日本中文免费字幕| 中文字幕精品一区二区精| 国产日韩欧美综合一区| 高清一区在线观看| 青青草成人影院| 国产一区玩具在线观看| 超碰人人在线| 精品国产网站在线观看| 日韩欧美三级在线观看| 久久久青草青青国产亚洲免观| 国产特级淫片高清视频| 欧美亚洲大陆| 国产精品1区2区在线观看| 成全电影播放在线观看国语| 欧美日韩久久久| 欧美丰满熟妇bbbbbb| 国产成人午夜99999| 免费一级特黄特色毛片久久看| 天天躁日日躁狠狠躁欧美| 国产精品福利在线| 成人免费网站在线观看视频| 欧美va亚洲va香蕉在线| 亚洲欧美偷拍一区| 中文字幕中文乱码欧美一区二区 | 亚洲福利合集| 国语自产精品视频在线看一大j8 | 日本精品三区| 成人av免费看| 在线手机中文字幕| 色偷偷噜噜噜亚洲男人的天堂| 99国产精品久久久久久久成人| 亚洲国产精品综合小说图片区| 成人免费毛片糖心| 国产在线精品免费av| 欧美一级视频免费看| 国产成人调教视频在线观看| 成人免费视频在线观看超级碰| 福利写真视频网站在线| 伊人久久男人天堂| 亚洲成人黄色片| 91国产免费观看| 国产大学生自拍| 久久久久久久久岛国免费| 妖精视频在线观看| 首页国产欧美日韩丝袜| 欧美另类videosbestsex日本| 偷拍视屏一区| 99porn视频在线| 精品国模一区二区三区| 欧美激情va永久在线播放| 国产黄色在线播放| 亚洲国产精品久久久久久| 中文字幕一级片| 欧美日韩另类在线| 九九热国产在线| 亚洲国产岛国毛片在线| 97香蕉碰碰人妻国产欧美| 激情成人综合网| 日本www.色| 国产欧美日韩亚洲一区二区三区| 日韩 欧美 自拍| 奇米影视亚洲| 日本一区二区精品视频| 果冻天美麻豆一区二区国产| 成人网址在线观看| 91福利精品在线观看| 国产91精品青草社区| 国产极品人妖在线观看| 欧美成aaa人片在线观看蜜臀| chinese偷拍一区二区三区| 精品一区二区三区四区| 噜噜噜久久,亚洲精品国产品| 欧美肥胖老妇做爰| 亚洲天堂网在线观看视频| 色综合激情五月| 日本韩国欧美中文字幕| 亚洲成a人片综合在线| 中文字幕在线有码| 17c精品麻豆一区二区免费| 天天操天天干天天操天天干| 久久嫩草精品久久久精品| 一女三黑人理论片在线| caoporn国产精品| 中文字幕在线国产| 高清不卡一二三区| 香蕉在线观看视频| 国产91丝袜在线观看| 超碰中文字幕在线观看| 韩国午夜理伦三级不卡影院| 天堂在线资源视频| 免费日本视频一区| 依人在线免费视频| 国产在线一区二区综合免费视频| 999在线观看| 国产真实乱对白精彩久久| 日日干日日操日日射| 精品一区二区三区免费播放 | 99久久婷婷国产| 亚洲av无码一区二区三区网址| 97se亚洲国产综合在线| 成人精品在线观看视频| 久久久99精品免费观看| 最近中文字幕免费视频| 国产精品视频九色porn| www.com.av| 亚洲在线视频网站| 久久久久久久黄色片| 色综合久久久久网| 中文字幕激情视频| 欧美一区在线视频| 理论片中文字幕| 亚洲美女视频网站| 日本在线看片免费人成视1000| 久久精品亚洲一区| 少妇视频在线| 欧洲亚洲免费在线| 狂野欧美性猛交xxxx| 91久久国产综合久久蜜月精品 | 亚洲午夜精品久久久久久浪潮| 婷婷综合伊人| 国产欧美久久久久| 久久精品一本| 久久久久久久久久久久久久久国产| 国产精品中文有码| 国产在线观看无码免费视频| 中文字幕第一区二区| 欧美成人三级视频| 疯狂蹂躏欧美一区二区精品| 亚洲天堂免费av| 欧美成人三级在线| 国产精品天堂| 欧美激情国产日韩精品一区18| 色资源二区在线视频| 91精品美女在线| 香蕉久久99| 成人免费看片视频在线观看| 性高湖久久久久久久久| 亚洲制服中文字幕| 2020国产精品| 欧美成欧美va| 欧美亚洲动漫制服丝袜| 国内外成人免费激情在线视频网站 | 在线不卡的av| 亚洲国产精品久久久久爰色欲| 国产精品日韩| 久久久久久综合网| 91麻豆精品在线观看| 五月天av网站| 日本韩国精品一区二区在线观看| 精品美女www爽爽爽视频| 亚洲一区www| 国产精品—色呦呦| 成人免费自拍视频| 精品免费av| 国产97在线 | 亚洲| 国产精品综合一区二区三区| 国产真人做爰视频免费| 亚洲超碰精品一区二区| 99精品免费观看| 在线视频日本亚洲性| 欧美激情护士| 国产成人精品日本亚洲11| 欧美xxav| 天天爱天天操天天干| 26uuu国产日韩综合| 久久久久久久蜜桃| 91精品欧美久久久久久动漫| 国产毛片av在线| 91超碰中文字幕久久精品| 久久精品一区二区免费播放| 中文字幕 久热精品 视频在线| 日韩精品成人在线| 欧美mv日韩mv国产网站app| 里番在线观看网站| 国产精品免费网站| 国产精品欧美在线观看| 国产老熟妇精品观看| 成人午夜视频在线观看| 欧美卡一卡二卡三| 欧美一区二区三区四区视频| 日本在线天堂| 国产色综合天天综合网 | 日韩av在线电影网| 第四色日韩影片| 国产精品久久久久av福利动漫| 欧美在线1区| 国产sm在线观看| 亚洲国产精品自拍| 姝姝窝人体www聚色窝| 国内久久久精品| 小说区图片区色综合区| 狠狠97人人婷婷五月| 91视频国产观看| 国产精品视频一区在线观看| 精品视频久久久| 国偷自产一区二区免费视频| 欧美一区二区综合| 日本大胆欧美人术艺术动态| 调教驯服丰满美艳麻麻在线视频| 欧美在线观看一二区| 在线观看免费版| 18成人在线| 亚洲高清av| 播金莲一级淫片aaaaaaa| 在线观看日韩国产| 日本黄色片在线观看| 亚洲综合最新在线| 亚洲精选成人| xxxx日本黄色| 欧美乱熟臀69xxxxxx| 日本在线观看大片免费视频| 国产区一区二区| 久久精品女人天堂| 亚洲精品一区二区三区在线播放| 欧美一区二区日韩一区二区| 2020日本在线视频中文字幕| 欧美精品一区二区三区在线四季 | 红桃视频成人在线观看| 久久天堂电影| 亚洲自拍偷拍第一页| 亚洲韩日在线| 成人黄色免费网址| 日韩一区国产二区欧美三区| 九色porny视频在线观看| 先锋影音一区二区三区| 国产成人在线看| 在线观看日本网站| 久久国产精品电影| 综合色就爱涩涩涩综合婷婷| 成人黄色一级大片| 天天影视涩香欲综合网| av在线播放免费| 高清av免费一区中文字幕| 日韩成人午夜电影| 91 在线视频| 亚洲女人天堂成人av在线| 国产精品亚洲欧美一级在线 | 国产精品18久久久久久久网站| 久久国产精品系列| 美女撒尿一区二区三区| 牲欧美videos精品| 欧美在线a视频| 色先锋aa成人| 欧美人与禽猛交乱配| 日本一区免费在线观看| 成人免费高清在线观看| 亚洲综合网av| 人妖精品videosex性欧美| 欧美jjzz|