<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Spring的@Async使用防坑

      很多人會直接只用@Async來執行異步操作。但是這里面有一個問題,如果都是用spring的默認實現,是有坑的。

      當我們開啟 EnableAsync注解 就可以使用@Async注解來執行異步操作了。

      我們現在通過EnableAsync注解去打開spring異步世界的坑。

       

       

      走JDK的動態代理:

       

       

       

       

       

       最終走到這兒來了:AnnotationAsyncExecutionInterceptor#getDefaultExecutor(BeanFactory)

       

      問題就在這里,如果我們自己沒有定義 Executor,也就是上面從容器beanFactory 中拿不到Executor 那么就會使用--SimpleAsyncTaskExecutor,這玩意兒實際上根本不是線程池!!!!!

      請看它的 doExecute 方法,直接new新的線程。

       

       

      所以這玩意兒一直都是在創建新的 線程執行任務。。。。。

      修改方式:

      方案1.@Async 指定我們自己的線程池執行:@Async("自己線程池beanName") 

      方案2:回到AnnotationAsyncExecutionInterceptor#getDefaultExecutor(BeanFactory) 方法,看它如何獲取線程池的:

       

       要么我們自己配置一個TaskExecutor, 要么我們把我自己配置的線程池的名字叫做  taskExecutor 。這個常量的值:

      DEFAULT_TASK_EXECUTOR_BEAN_NAME = "taskExecutor",這樣可以避免使用SimpleAsyncTaskExecutor。

      方案3:實現 AsyncConfigurer 接口作為一個配置類交給spring管理,通過 getAsyncExecutor 方法配置異步線程池。

       

      posted @ 2024-01-18 20:55  白露非霜  閱讀(554)  評論(3)    收藏  舉報
      訪問量
      主站蜘蛛池模板: 国产精品亚洲二区在线播放| 久久精品国产亚洲av麻豆小说| 国产成人免费ā片在线观看| 色综合热无码热国产| 亚洲精品入口一区二区乱| 少妇太爽了在线观看免费视频| 国产精品一区二区久久精品无码| 欧美性猛交xxxx乱大交极品| 97国产成人无码精品久久久| 久久综合九色综合久桃花| 久久99精品中文字幕在| 崇礼县| 国产精品美腿一区在线看| 国产中文字幕精品视频| 日韩精品一区二区三区激情视频 | 97久久综合亚洲色hezyo| 亚洲综合精品一区二区三区| 成人看的污污超级黄网站免费| 人妻中文字幕精品一页| 精品人妻大屁股白浆无码| 欧美亚洲色综久久精品国产| 国产精品一区免费在线看| 欧美videos粗暴| 无码av中文字幕久久专区| 国产精品综合av一区二区| 久久不卡精品| 综合色一色综合久久网| www国产精品内射熟女| 国产好大好硬好爽免费不卡| 无翼乌口工全彩无遮挡h全彩| 色综合天天综合网天天看片| 亚洲av日韩av综合在线观看| 久久精品一偷一偷国产| 麻豆一区二区三区精品视频| 亚洲熟少妇一区二区三区| 国产初高中生在线视频| 国产精品久久久久7777按摩| 亚洲一区二区三级av| 国产永久免费高清在线| 亚洲色大成网站www久久九| 日韩精品理论片一区二区|