spring ThreadPoolTaskExecutor使用總結


ThreadPoolTaskExecutor提供TaskDecorator可以實現類似ThreadPoolExecutor.afterExecute()類似功能

taskDecorator主要是對Runnable任務裝飾一下, 在任務執行時完成異常日志打印、ThreadLocal清理等功能
但是對Callable任務(由submit()方法提交的任務),這個taskDecorator雖然也能裝飾,但是並不能捕獲異常, 因為類似FutureTask的run方法內部自己補獲了異常,不會拋出到afterExecute方法中

要想捕獲類似FutureTask的異常,需要手動調用get(), 參考ThreadPoolExecutor.afterExecutor()的doc注釋

最終在ThreadPoolTaskExecutor中的樣子大概如下:

submit()任務最終也會走execute()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM