線程池
Executor代表了一個線程池,可以在Tomcat組件之間共享。使用線程池的好處在於減少了創建銷毀線程的相關消耗,而且可以提高線程的使用效率。要想使用線程池,首先需要在 Service標簽中配置。
<Service name="Catalina"> <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="100" maxIdleTime="60000" maxQueueSize="Integer.MAX_VALUE" prestartminSpareThreads="false" threadPriority="5" className="org.apache.catalina.core.StandardThreadExecutor"/> ...
# 在Connector中指定線程池 <Connector executor="tomcatThreadPool"
參數詳解
name 注:線程池名稱,用於 Connector中指定。 namePrefix 注:所創建的每個線程的名稱前綴,一個單獨的線程名稱為 namePrefix+threadNumber。 maxThreads 注:池中最大線程數。 minSpareThreads 注:活躍線程數,也就是核心池線程數,這些線程不會被銷毀,會一直存在。 maxIdleTime 注:線程空閑時間,超過該時間后,空閑線程會被銷毀,默認值為6000(1分鍾),單位毫秒。 maxQueueSize 注:在被執行前最大線程排隊數目,默認為Int的最大值,也就是廣義的無限。除非特殊情況,這個值不需要更改,否則會有請求不會被處理的情況發生。 prestartminSpareThreads 注:啟動線程池時是否啟動 minSpareThreads部分線程。默認值為false,即不啟動。 threadPriority 注:線程池中線程優先級,默認值為5,值從1到10。 className 注:線程池實現類,未指定情況下,默認實現類為org.apache.catalina.core.StandardThreadExecutor。如果想使用自定義線程池首先需要實現 org.apache.catalina.Executor接口。