线程池
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接口。