Executor (スレッドプール)
目次
はじめに
Executorは、Tomcatのコンポーネント間で共有できるスレッドプールを表します。これまで、コネクタごとにスレッドプールが作成されていましたが、これにより、(主に)コネクタ間だけでなく、Executorをサポートするように構成された他のコンポーネント間でもスレッドプールを共有できるようになります。
Executor は、org.apache.catalina.Executor
インターフェースを実装する必要があります。
Executor は、Service 要素のネストされた要素です。コネクタに認識させるには、server.xml で Executor 要素が Connector 要素よりも前に記述されている必要があります。
属性
共通属性
Executorのすべての実装は、以下の属性をサポートします。
属性 | 説明 |
---|---|
className |
実装クラス。この実装は |
name |
server.xml の他の場所でこのプールを参照するために使用される名前。この名前は必須であり、一意である必要があります。 |
標準実装
この実装は、Executor に割り当てられたタスクを実行するために、プラットフォームスレッドのプールを使用します。
この実装を使用するには、className
属性を org.apache.catalina.core.StandardThreadExecutor
にする必要があります。
標準実装は以下の属性をサポートします。
属性 | 説明 |
---|---|
threadPriority |
(int) Executor内のスレッドのスレッド優先度。デフォルトは |
daemon |
(boolean) スレッドがデーモンスレッドであるかどうか。デフォルトは |
namePrefix |
(String) Executorによって作成される各スレッドの名前のプレフィックス。個々のスレッドのスレッド名は |
maxThreads |
(int) このプールの最大アクティブスレッド数。デフォルトは |
minSpareThreads |
(int) 常に生きているスレッド(アイドル状態とアクティブ状態)の最小数。デフォルトは |
maxIdleTime |
(int) アイドルスレッドがシャットダウンするまでのミリ秒数。ただし、アクティブスレッドの数が minSpareThreads 以下である場合は除きます。デフォルト値は |
maxQueueSize |
(int) 実行を待機してキューに入れられる、実行可能なタスクの最大数。これを超えると拒否されます。デフォルト値は |
threadRenewalDelay |
(long) ThreadLocalLeakPreventionListener が設定されている場合、停止したコンテキストについてこの Executor に通知します。コンテキストが停止した後、プール内のスレッドは再生成されます。すべてのスレッドが同時に再生成されるのを避けるため、このオプションは任意のスレッド2本の再生成間の遅延を設定します。値はミリ秒単位で、デフォルト値は |
仮想スレッド実装
この実装は、Executor に割り当てられた各タスクを実行するために、新しい仮想スレッドを使用します。
この実装を使用するには、className
属性を org.apache.catalina.core.StandardVirtualThreadExecutor
にする必要があります。
仮想スレッド実装は以下の属性をサポートします。
属性 | 説明 |
---|---|
namePrefix |
(String) Executorによって作成される各スレッドの名前のプレフィックス。個々のスレッドのスレッド名は |