我正在學習執行緒以及在構建 Web 應用程式時執行緒是如何作業的。
據我了解,流程如下:
- 用戶發送 Http 請求
- Tomcat 創建一個運行控制器的執行緒。
- Spring Boot 運行一個帶注釋的異步方法,該方法在由 Spring Boot 應用程式創建的單獨執行緒池上運行代碼。
- tomcat 執行緒被釋放,直到 async 方法完成以處理更多請求。
我的理解正確嗎?
spring boot 是否創建自己的執行緒池以在釋放主 tomcat 執行緒時運行異步操作?
uj5u.com熱心網友回復:
呼叫異步方法時,tomcat 執行緒不會“釋放”或“釋放”。它在 async 方法呼叫之后繼續執行下一條指令并繼續運行(除非它對 async 方法回傳的 future 執行諸如 call get 之類的操作,以便它阻塞直到 future 完成)。兩個執行緒同時執行。
確實,Spring 有自己的獨立執行緒池,用于異步方法。使用的 Executor 是可配置的,@Async 將 executor 的名稱作為引數,因此如果需要,不同的方法可以使用不同的池。當然,Tomcat 有一個執行緒池。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/440146.html
