クラス ExecutorConfigurationSupport
- 実装されているすべてのインターフェース:
SerializableSE, ThreadFactorySE, EventListenerSE, Aware, BeanNameAware, DisposableBean, InitializingBean, ApplicationContextAware, ApplicationListener<ContextClosedEvent>, Lifecycle, Phased, SmartLifecycle
- 既知の直属サブクラス
ScheduledExecutorFactoryBean, ThreadPoolExecutorFactoryBean, ThreadPoolTaskExecutor, ThreadPoolTaskScheduler
ExecutorServiceSE(通常は ThreadPoolExecutorSE または ScheduledThreadPoolExecutorSE)をセットアップするための基本クラス。CustomizableThreadCreator からスレッドのカスタマイズオプション (名前、優先順位など) を継承して、共通の構成設定と共通のライフサイクル処理を定義します。
- 導入:
- 3.0
- 作成者:
- Juergen Hoeller
- 関連事項:
フィールドのサマリー
フィールド修飾子と型フィールド説明static final int実行者SmartLifecycleのデフォルトフェーズ:Integer.MAX_VALUE / 2.protected final org.apache.commons.logging.Logコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明protected voidafterExecute(RunnableSE task, @Nullable ThrowableSE ex) (開始 / 停止処理のため) 委譲先のフレームワークサブクラスの実行後コールバック。また、場合によっては拡張先のカスタムサブクラスにも使用されます (必ずこの実装も呼び出すようにしてください)。voidコンテナーがすべてのプロパティ値を適用した後にinitialize()を呼び出します。protected voidbeforeExecute(ThreadSE thread, RunnableSE task) (開始 / 停止処理のため) 委譲先のフレームワークサブクラスの実行前コールバック。また、場合によっては拡張先のカスタムサブクラスにも対応します (必ずこの実装も呼び出すようにしてください)。protected voidExecutorService.shutdownNow()から返された、実行を開始していない指定された残りのタスクをキャンセルします。voiddestroy()BeanFactory がエグゼキューターインスタンスを破棄するときにshutdownを呼び出します。intgetPhase()このエグゼキュータを一時停止および再開するためのライフサイクルフェーズを返します。voidExecutorService をセットアップします。protected abstract ExecutorServiceSEinitializeExecutor(ThreadFactorySE threadFactory, RejectedExecutionHandlerSE rejectedExecutionHandler) ターゲットExecutorServiceSE インスタンスを作成します。protected void早期シャットダウンシグナル: さらなるタスクをトリガーせず、shutdown()メソッドの実際の破棄ステップに入る前に既存のタスクを完了させます。void基盤となる ExecutorService でシャットダウンを開始し、それ以降のタスクの送信を拒否します。booleanこのエグゼキューターが一時停止していないか、シャットダウンしていないかどうかを確認します。void早期シャットダウンを開始するためのContextClosedEventハンドラー。voidsetAcceptTasksAfterContextClose(boolean acceptTasksAfterContextClose) アプリケーションコンテキストクローズフェーズが開始された後に、さらなるタスクを受け入れるかどうかを設定します。voidsetApplicationContext(ApplicationContext applicationContext) このオブジェクトが実行される ApplicationContext を設定します。voidsetAwaitTerminationMillis(long awaitTerminationMillis) ミリ秒精度のsetAwaitTerminationSeconds(int)のバリアント。voidsetAwaitTerminationSeconds(int awaitTerminationSeconds) コンテナーの残りの部分がシャットダウンし続ける前に、残りのタスクが実行を完了するのを待つために、このエグゼキュータがシャットダウン時にブロックする最大秒数を設定します。voidsetBeanName(StringSE name) この Bean を作成した Bean ファクトリで Bean の名前を設定します。voidsetPhase(int phase) このエグゼキュータを一時停止および再開するためのライフサイクルフェーズを指定します。voidsetRejectedExecutionHandler(@Nullable RejectedExecutionHandlerSE rejectedExecutionHandler) ExecutorService に使用する RejectedExecutionHandler を設定します。voidsetThreadFactory(@Nullable ThreadFactorySE threadFactory) ExecutorService のスレッドプールに使用する ThreadFactory を設定します。voidsetThreadNamePrefix(@Nullable StringSE threadNamePrefix) 新しく作成されたスレッドの名前に使用するプレフィックスを指定します。voidsetVirtualThreads(boolean virtualThreads) プラットフォームスレッドの代わりに仮想スレッドを使用するかどうかを指定します。voidsetWaitForTasksToCompleteOnShutdown(boolean waitForJobsToCompleteOnShutdown) 実行中のタスクを中断せず、キュー内のすべてのタスクを実行せずに、シャットダウン時にスケジュールされたタスクが完了するまで待機するかどうかを設定します。voidshutdown()対応する構成設定に従って、基盤となる ExecutorService で完全なシャットダウンを実行します。voidstart()以前に一時停止されていた場合は、このエグゼキュータを再開します (それ以外の場合は何もしません)。voidstop()タスクの完了を待たずに、このエグゼキュータを一時停止します。voidstop(RunnableSE callback) このエグゼキュータを一時停止し、現在実行中のタスクがすべて完了すると、指定されたコールバックをトリガーします。クラス CustomizableThreadFactory から継承されたメソッド
newThreadクラス CustomizableThreadCreator から継承されたメソッド
createThread, getDefaultThreadNamePrefix, getThreadGroup, getThreadNamePrefix, getThreadPriority, isDaemon, nextThreadName, setDaemon, setThreadGroup, setThreadGroupName, setThreadPriorityクラス ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSEインターフェース ApplicationListener から継承されたメソッド
supportsAsyncExecutionインターフェース SmartLifecycle から継承されたメソッド
isAutoStartup, isPauseable
フィールドの詳細
DEFAULT_PHASE
public static final int DEFAULT_PHASE実行者SmartLifecycleのデフォルトフェーズ:Integer.MAX_VALUE / 2.これは、他の
SmartLifecycle実装に関連付けられたデフォルトフェーズInteger.MAX_VALUEとは異なり、通常は自動で開始されるエグゼキュータ / スケジューラ Bean を初期の起動フェーズとその後のシャットダウンフェーズに配置しながら、共通フェーズ 0 を持つ通常のLifecycleコンポーネント用の余地を残します。- 導入:
- 6.2
- 関連事項:
logger
protected final org.apache.commons.logging.Log logger
コンストラクターの詳細
ExecutorConfigurationSupport
public ExecutorConfigurationSupport()
メソッドの詳細
setVirtualThreads
public void setVirtualThreads(boolean virtualThreads) プラットフォームスレッドの代わりに仮想スレッドを使用するかどうかを指定します。これはデフォルトではオフになっており、従来のプラットフォームスレッドプールが設定されます。仮想スレッドを使用して厳密に管理されたスレッドプールを設定するには、このフラグを Java 21 以上で
trueに設定します。SimpleAsyncTaskExecutorとは対照的に、これは実行スレッドの停止と再起動のための Spring のライフサイクル管理と統合されており、正常なシャットダウン処理のための早期停止シグナルも含まれています。これまたは
setThreadFactory(ThreadFactory)の両方ではなく、いずれかを指定します。- 導入:
- 6.2
- 関連事項:
setThreadFactory
ExecutorService のスレッドプールに使用する ThreadFactory を設定します。デフォルトは、基礎となる ExecutorService のデフォルトのスレッドファクトリです。Jakarta EE または JSR-236 をサポートする他の管理環境では、JNDI に配置された ManagedThreadFactory を指定することを検討してください。デフォルトでは、"java:comp/DefaultManagedThreadFactory" にあります。検索に便利なように、XML の "jee:jndi-lookup" 名前空間要素またはプログラムによる
JndiLocatorDelegateを使用します。または、マネージスレッドファクトリが見つからない場合は、Spring のDefaultManagedAwareThreadFactoryをローカルスレッドにフォールバックすることを検討してください。- 関連事項:
setThreadNamePrefix
クラスからコピーされた説明:CustomizableThreadCreator新しく作成されたスレッドの名前に使用するプレフィックスを指定します。デフォルトは "SimpleAsyncTaskExecutor-" です。- オーバーライド:
- クラス
CustomizableThreadCreatorのsetThreadNamePrefix
setRejectedExecutionHandler
public void setRejectedExecutionHandler(@Nullable RejectedExecutionHandlerSE rejectedExecutionHandler) ExecutorService で使用する RejectedExecutionHandler を設定します。デフォルトは、ExecutorService のデフォルトの中止ポリシーです。- 関連事項:
setAcceptTasksAfterContextClose
public void setAcceptTasksAfterContextClose(boolean acceptTasksAfterContextClose) アプリケーションコンテキストクローズフェーズが開始された後に、さらなるタスクを受け入れるかどうかを設定します。6.1 のデフォルトは
falseで、エグゼキューターの早期ソフトシャットダウンをトリガーするため、それ以降のタスクの送信は拒否されます。これをtrueに切り替えて、シャットダウンフェーズが長くなる代わりに、他のコンポーネントが自身の停止および破棄コールバック中であってもタスクを送信できるようにします。この場合、エグゼキュータは調整されたライフサイクル停止フェーズを経ず、自身のシャットダウン時にタスクのみを停止します。acceptTasksAfterContextClose=trueのような動作も、実質的にこのフラグの特定のバリアントである"waitForTasksToCompleteOnShutdown"から派生し、並行管理停止フェーズでの早期のソフトシャットダウンを、エグゼキュータの破棄ステップでのシリアルソフトシャットダウンに置き換え、"awaitTerminationSeconds"プロパティに従って個別に待機します。このフラグは、エグゼキューターが Spring アプリケーションコンテキストで実行されており、
ContextClosedEventを受信できる場合にのみ有効です。また、"strictEarlyShutdown"が指定されていない限り、ThreadPoolTaskExecutorはデフォルトで、調整されたライフサイクル停止と組み合わせて、コンテキストが閉じられた後のタスクを効果的に受け入れることに注意してください。- 導入:
- 6.1
- 関連事項:
setWaitForTasksToCompleteOnShutdown
public void setWaitForTasksToCompleteOnShutdown(boolean waitForJobsToCompleteOnShutdown) 実行中のタスクを中断せず、キュー内のすべてのタスクを実行せずに、シャットダウン時にスケジュールされたタスクが完了するまで待機するかどうかを設定します。デフォルトは
falseで、最初に調整されたライフサイクル停止が行われ ("acceptTasksAfterContextClose"が設定されていない場合)、次に進行中のタスクを中断してキューをクリアすることで即時にシャットダウンします。シャットダウンフェーズを長くしてもタスクを完全に完了したい場合は、このフラグをtrueに切り替えます。この場合、エグゼキュータは調整されたライフサイクル停止フェーズを経ず、単に停止して、それ自体のシャットダウン時にタスクの完了を待つだけになります。進行中のタスクが完了するまで、Spring のコンテナーのシャットダウンは継続されることに注意してください。コンテナーの残りの部分がシャットダウンを続ける前に、このエグゼキュータがタスクの終了をブロックして待機するようにしたい場合 (たとえば、タスクに必要な他のリソースを維持するため)、このプロパティの代わりに、またはこのプロパティに加えて、
"awaitTerminationSeconds"プロパティを設定します。- 関連事項:
setAwaitTerminationSeconds
public void setAwaitTerminationSeconds(int awaitTerminationSeconds) コンテナーの残りの部分がシャットダウンし続ける前に、残りのタスクが実行を完了するのを待つために、このエグゼキュータがシャットダウン時にブロックする最大秒数を設定します。これは、残りのタスクがコンテナーによって管理されている他のリソースへのアクセスを必要とする可能性が高い場合に特に役立ちます。デフォルトでは、このエグゼキューターはタスクの終了をまったく待ちません。すぐにシャットダウンして、進行中のタスクを中断し、残りのタスクキューをクリアします。または、
"waitForTasksToCompleteOnShutdown"フラグがtrueに設定されている場合、キュー内のすべての残りのタスクだけでなく、進行中のすべてのタスクを並行して完全に実行し続けます。コンテナーの残りの部分にシャットダウンします。いずれの場合でも、このプロパティを使用して終了待ち期間を指定すると、このエグゼキューターはタスクの終了を指定された時間(最大)待機します。経験則として、"waitForTasksToCompleteOnShutdown" を同時に
trueに設定する場合は、キュー内の残りのすべてのタスクが実行されるため、ここで大幅に高いタイムアウトを指定します。デフォルトのシャットダウン動作とは対照的に現在、スレッドの中断に反応しないタスクを実行しています。- 関連事項:
setAwaitTerminationMillis
public void setAwaitTerminationMillis(long awaitTerminationMillis) ミリ秒精度のsetAwaitTerminationSeconds(int)のバリアント。- 導入:
- 5.2.4
- 関連事項:
setPhase
public void setPhase(int phase) このエグゼキュータを一時停止および再開するためのライフサイクルフェーズを指定します。6.2 では、エグゼキュータ / スケジューラのデフォルトは
DEFAULT_PHASEであり、他のSmartLifecycle実装後に停止します。- 導入:
- 6.1
- 関連事項:
getPhase
public int getPhase()このエグゼキュータを一時停止および再開するためのライフサイクルフェーズを返します。- 次で指定:
- インターフェース
PhasedのgetPhase - 次で指定:
- インターフェース
SmartLifecycleのgetPhase - 導入:
- 6.1
- 関連事項:
setBeanName
インターフェースからコピーされた説明:BeanNameAwareこの Bean を作成した Bean ファクトリで Bean の名前を設定します。通常の Bean プロパティの設定後、ただし
InitializingBean.afterPropertiesSet()またはカスタム init メソッドなどの init コールバックの前に呼び出されます。- 次で指定:
- インターフェース
BeanNameAwareのsetBeanName - パラメーター:
name- ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String)メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。
setApplicationContext
インターフェースからコピーされた説明:ApplicationContextAwareこのオブジェクトが実行される ApplicationContext を設定します。通常、この呼び出しはオブジェクトの初期化に使用されます。通常の Bean プロパティの設定後、ただし
InitializingBean.afterPropertiesSet()またはカスタム init メソッドなどの init コールバックの前に呼び出されます。ResourceLoaderAware.setResourceLoader(ResourceLoader)、ApplicationEventPublisherAware.setApplicationEventPublisher(ApplicationEventPublisher)およびMessageSourceAwareの後に呼び出されます(該当する場合)。- 次で指定:
- インターフェース
ApplicationContextAwareのsetApplicationContext - パラメーター:
applicationContext- このオブジェクトによって使用される ApplicationContext オブジェクト- 関連事項:
afterPropertiesSet
public void afterPropertiesSet()コンテナーがすべてのプロパティ値を適用した後にinitialize()を呼び出します。- 次で指定:
- インターフェース
InitializingBeanのafterPropertiesSet - 関連事項:
initialize
public void initialize()ExecutorService をセットアップします。initializeExecutor
protected abstract ExecutorServiceSE initializeExecutor(ThreadFactorySE threadFactory, RejectedExecutionHandlerSE rejectedExecutionHandler) ターゲットExecutorServiceSE インスタンスを作成します。afterPropertiesSetによって呼び出されます。- パラメーター:
threadFactory- 使用する ThreadFactoryrejectedExecutionHandler- 使用する RejectedExecutionHandler- 戻り値:
- 新しい ExecutorService インスタンス
- 関連事項:
destroy
public void destroy()BeanFactory がエグゼキューターインスタンスを破棄するときにshutdownを呼び出します。- 次で指定:
- インターフェース
DisposableBeanのdestroy - 関連事項:
initiateShutdown
public void initiateShutdown()基盤となる ExecutorService でシャットダウンを開始し、それ以降のタスクの送信を拒否します。エグゼキュータはそれ以上のタスクを受け入れず、定期的なタスクのさらなるスケジュール設定を妨げ、既存のタスクをそのまま完了させます。このステップはノンブロッキングであり、後で完全な
shutdown()呼び出しを行う前に、早期シャットダウンシグナルとして適用できます。context closeで早期シャットダウンシグナルが自動的に呼び出されます。特にコンテナーの外で、手動で呼び出すこともできます。- 導入:
- 6.1
- 関連事項:
shutdown
public void shutdown()対応する構成設定に従って、基盤となる ExecutorService で完全なシャットダウンを実行します。このステップは、構成された終了期間中ブロックされる可能性があり、残りのタスクが完了するのを待ちます。早期シャットダウンシグナルでそれ以上のタスクを受け入れないようにするには、最初に
initiateShutdown()を呼び出します。- 関連事項:
cancelRemainingTask
ExecutorService.shutdownNow()から返された、実行を開始していない指定された残りのタスクをキャンセルします。- パラメーター:
task- キャンセルするタスク (通常、RunnableFutureSE )- 導入:
- 5.0.5
- 関連事項:
start
stop
stop
このエグゼキュータを一時停止し、現在実行中のタスクがすべて完了すると、指定されたコールバックをトリガーします。- 次で指定:
- インターフェース
SmartLifecycleのstop - 導入:
- 6.1
- 関連事項:
isRunning
beforeExecute
(開始 / 停止処理のため) 委譲先のフレームワークサブクラスの実行前コールバック。また、場合によっては拡張先のカスタムサブクラスにも対応します (必ずこの実装も呼び出すようにしてください)。- パラメーター:
thread- タスクを実行するスレッドtask- 実行されるタスク- 導入:
- 6.1
- 関連事項:
afterExecute
(開始 / 停止処理のため) 委譲先のフレームワークサブクラスの実行後コールバック。また、場合によっては拡張先のカスタムサブクラスにも使用されます (必ずこの実装も呼び出すようにしてください)。- パラメーター:
task- 実行されたタスクex- 実行中にスローされた例外 (存在する場合)- 導入:
- 6.1
- 関連事項:
onApplicationEvent
早期シャットダウンを開始するためのContextClosedEventハンドラー。- 次で指定:
- インターフェース
ApplicationListener<ContextClosedEvent>のonApplicationEvent - パラメーター:
event- 応答するイベント- 導入:
- 6.1
- 関連事項:
initiateEarlyShutdown
protected void initiateEarlyShutdown()早期シャットダウンシグナル: さらなるタスクをトリガーせず、shutdown()メソッドの実際の破棄ステップに入る前に既存のタスクを完了させます。これはcoordinated lifecycle stop phaseと併用します。遅延シャットダウンの兆候が決定されていない場合、つまり
"acceptTasksAfterContextCloseおよび"waitForTasksToCompleteOnShutdown"フラグが設定されていない場合、onApplicationEvent(ContextClosedEvent)から呼び出されます。デフォルトの実装は
initiateShutdown()を呼び出します。- 導入:
- 6.1.4
- 関連事項: