亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring @Async 注解的配置使用問題

Spring @Async 注解的配置使用問題

白豬掌柜的 2018-10-24 10:24:18
關于Spring中的@Async的使用問題在使用過程中發現在applicationContext.xml中僅配置 <task:annotation-driven/> 就可以使用@Async注解處理異步第一種配置: <task:annotation-driven/> 第二種配置: <task:annotation-driven executor="myExecutor"/> <task:executor id="myExecutor" pool-size="5-10" queue-capacity="200" keep-alive="180" rejection-policy="ABORT"/>之前一直使用的是第一種配置,使用spring的默認線程池來處理。但在查詢各種@Async的使用方法時,都是使用的第二種配置方式。想請教一下使用第一種有什么弊端,這兩種有什么區別
查看完整描述

2 回答

?
MM們

TA貢獻1886條經驗 獲得超2個贊

默認的線程池不一定符合你的業務需求

查看完整回答
反對 回復 2018-10-24
?
手掌心

TA貢獻1942條經驗 獲得超3個贊

你這個問題可以轉變為為什么要修改默認的 Executor 的問題,這也是線程池的配置問題。
自定義的線程池配置肯定是更適合你的項目的,況且默認的線程池配置可能會造成 bug 。

引用《阿里巴巴開發手冊》:

【強制】線程池不允許使用Executors去創建,而是通過ThreadPoolExecutor的方式,這樣

的處理方式讓寫的同學更加明確線程池的運行規則,規避資源耗盡的風險。

說明:Executors各個方法的弊端:

1)newFixedThreadPool和newSingleThreadExecutor:

主要問題是堆積的請求處理隊列可能會耗費非常大的內存,甚至OOM。

2)newCachedThreadPool和newScheduledThreadPool:

主要問題是線程數最大數是Integer.MAX_VALUE,可能會創建數量非常多的線程,甚至OOM。


查看完整回答
反對 回復 2018-10-24
  • 2 回答
  • 0 關注
  • 1708 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號