執行器 (執行緒池)

目錄

簡介

執行器代表一個執行緒池,可在 Tomcat 中的元件之間共用。以往每個連接器都會建立一個執行緒池,但這允許您共用一個執行緒池,主要是在連接器之間,但當其他元件配置為支援執行器時,也可以共用。

執行器必須實作 org.apache.catalina.Executor 介面。

執行器是 服務 元素的巢狀元素。而為了讓連接器選取執行器,執行器元素必須出現在 server.xml 中連接器元素之前。

屬性

共用屬性

所有 執行器實作都支援下列屬性

屬性 說明
className

實作的類別。實作必須實作 org.apache.catalina.Executor 介面。此介面可確保物件可透過其 name 屬性進行參照,並實作 Lifecycle,使其能夠與容器一起啟動和停止。className 的預設值為 org.apache.catalina.core.StandardThreadExecutor

name

在 server.xml 中其他地方用來參考此池的名稱。名稱是必需的,且必須是唯一的。

標準實作

此實作使用平台執行緒池來執行指派給執行器的任務。

要使用此實作,className 屬性必須為 org.apache.catalina.core.StandardThreadExecutor

標準實作支援下列屬性

屬性 說明
threadPriority

(int) 執行器中執行緒的執行緒優先順序,預設為 5 (Thread.NORM_PRIORITY 常數的值)

daemon

(boolean) 執行緒是否應為守護執行緒,預設為 true

namePrefix

(String) 執行器建立的每個執行緒的名稱字首。個別執行緒的執行緒名稱將會是 namePrefix+threadNumber。預設值為 tomcat-exec-

maxThreads

(int) 此池中活動執行緒的最大數量,預設為 200

minSpareThreads

(int) 永遠保持運作的執行緒(閒置和活動)的最小數量,預設為 25

maxIdleTime

(int) 閒置執行緒關閉前的毫秒數,除非活動執行緒的數量小於或等於 minSpareThreads。預設值為 60000 (1 分鐘)

maxQueueSize

(int) 可排隊等待執行的可執行任務的最大數量,在我們拒絕它們之前。預設值為 Integer.MAX_VALUE

threadRenewalDelay

(long) 如果已設定 ThreadLocalLeakPreventionListener,它會通知此執行器已停止的內容。在停止內容後,池中的執行緒會更新。為了避免同時更新所有執行緒,此選項會在任何 2 個執行緒更新之間設定延遲。此值以毫秒為單位,預設值為 1000 毫秒。如果值為負數,則不會更新執行緒。

虛擬執行緒實作

此實作使用新的虛擬執行緒來執行指派給執行器的每個任務。此執行器需要 Java 21 的最低 Java 版本。

要使用此實作,className 屬性必須為 org.apache.catalina.core.StandardVirtualThreadExecutor

虛擬執行緒實作支援下列屬性

屬性 說明
namePrefix

(String) 執行器建立的每個執行緒的名稱字首。個別執行緒的執行緒名稱將會是 namePrefix+threadNumber。預設值為 tomcat-virt-