执行器 (线程池)
目录
简介
Executor 表示一个线程池,可在 Tomcat 中的组件之间共享。传统上,每个连接器都会创建一个线程池,但这允许您在(主要是)连接器之间共享一个线程池,当其他组件配置为支持执行器时也可以共享。
执行器必须实现 org.apache.catalina.Executor
接口。
执行器是 Service 元素的嵌套元素。为了让连接器能够使用它,Executor 元素必须在 server.xml 中出现在 Connector 元素之前。
属性
通用属性
所有 Executor 的实现都支持以下属性:
属性 | 描述 |
---|---|
className |
实现的类。该实现必须实现 |
name |
在 server.xml 的其他地方引用此池时使用的名称。此名称是必需的,并且必须是唯一的。 |
标准实现
此实现使用平台线程池来执行分配给执行器的任务。
要使用此实现,className
属性必须是 org.apache.catalina.core.StandardThreadExecutor
。
标准实现支持以下属性:
属性 | 描述 |
---|---|
threadPriority |
(int) 执行器中线程的优先级,默认值为 |
daemon |
(boolean) 线程是否应为守护线程,默认值为 |
namePrefix |
(String) 执行器创建的每个线程的名称前缀。单个线程的线程名称将是 |
maxThreads |
(int) 此池中活动线程的最大数量,默认值为 |
minSpareThreads |
(int) 始终保持活动状态的最小线程数(空闲和活动),默认值为 |
maxIdleTime |
(int) 空闲线程关闭前毫秒数,除非活动线程数小于或等于 minSpareThreads。默认值为 |
maxQueueSize |
(int) 在拒绝之前,可以排队等待执行的可运行任务的最大数量。默认值为 |
threadRenewalDelay |
(long) 如果配置了 ThreadLocalLeakPreventionListener,它将通知此执行器已停止的上下文。上下文停止后,池中的线程会更新。为避免所有线程同时更新,此选项设置了任意两个线程更新之间的延迟。该值以毫秒为单位,默认值为 |
虚拟线程实现
此实现使用新的虚拟线程来执行分配给执行器的每个任务。
要使用此实现,className
属性必须是 org.apache.catalina.core.StandardVirtualThreadExecutor
。
虚拟线程实现支持以下属性:
属性 | 描述 |
---|---|
namePrefix |
(String) 执行器创建的每个线程的名称前缀。单个线程的线程名称将是 |