0
關於ThreadPoolTaskExecutor的行爲: 假設我將隊列大小設置爲500. Maxpoolsize爲100.如果有500個請求進來,那麼池中是否包含100個隊列包含400?意味着當時可以添加額外的100個請求? 如果當前隊列中有請求並且服務器關閉,請求是否消失?執行者會處理清理當前正在運行的線程嗎?當服務器關閉時,Spring的ThreadPoolTaskExecutor隊列被清除?pp
關於ThreadPoolTaskExecutor的行爲: 假設我將隊列大小設置爲500. Maxpoolsize爲100.如果有500個請求進來,那麼池中是否包含100個隊列包含400?意味着當時可以添加額外的100個請求? 如果當前隊列中有請求並且服務器關閉,請求是否消失?執行者會處理清理當前正在運行的線程嗎?當服務器關閉時,Spring的ThreadPoolTaskExecutor隊列被清除?pp
是的,從隊列中取出的任務不會計入隊列大小,因此您可以添加100個請求。
至於服務器何時關閉,這取決於它爲什麼會關閉。如果這個過程被突然殺死(就像SIGKILL一樣),那麼就不會進行清理。否則,這取決於任務如何實施。 ThreadPoolExecutor
本身不會做任何需要「清理」的事情。如果任務正在做一些需要清理的事情,那麼該任務需要照顧到這一點。特別是,當服務器關閉時,任務線程將被中斷,並且它應該做任何必要的清理工作。