public abstract class ExecutorConfigurationSupport extends CustomizableThreadFactory implements BeanNameAware, InitializingBean, DisposableBean
ExecutorService
(通常は ThreadPoolExecutor
または ScheduledThreadPoolExecutor
)をセットアップするための基本クラス。一般的な構成設定と一般的なライフサイクル処理を定義します。ExecutorService
、Executors
、ThreadPoolExecutor
、ScheduledThreadPoolExecutor
, 直列化された形式 コンストラクターと説明 |
---|
ExecutorConfigurationSupport() |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() コンテナーがすべてのプロパティ値を適用した後に initialize() を呼び出します。 |
protected void | cancelRemainingTask(java.lang.Runnable task) ExecutorService.shutdownNow() から返された、実行を決して賞賛しなかった残りのタスクをキャンセルします。 |
void | destroy() BeanFactory がタスクエグゼキューターインスタンスを破棄するときに shutdown を呼び出します。 |
void | initialize() ExecutorService をセットアップします。 |
protected abstract java.util.concurrent.ExecutorService | initializeExecutor(java.util.concurrent.ThreadFactory threadFactory, java.util.concurrent.RejectedExecutionHandler rejectedExecutionHandler) ターゲット ExecutorService インスタンスを作成します。 |
void | setAwaitTerminationSeconds(int awaitTerminationSeconds) コンテナーの残りの部分がシャットダウンし続ける前に、残りのタスクが実行を完了するのを待つために、このエグゼキュータがシャットダウン時にブロックする最大秒数を設定します。 |
void | setBeanName(java.lang.String name) この Bean を作成した Bean ファクトリで Bean の名前を設定します。 |
void | setRejectedExecutionHandler(java.util.concurrent.RejectedExecutionHandler rejectedExecutionHandler) ExecutorService に使用する RejectedExecutionHandler を設定します。 |
void | setThreadFactory(java.util.concurrent.ThreadFactory threadFactory) ExecutorService のスレッドプールに使用する ThreadFactory を設定します。 |
void | setThreadNamePrefix(java.lang.String threadNamePrefix) 新しく作成されたスレッドの名前に使用するプレフィックスを指定します。 |
void | setWaitForTasksToCompleteOnShutdown(boolean waitForJobsToCompleteOnShutdown) 実行中のタスクを中断せず、キュー内のすべてのタスクを実行せずに、シャットダウン時にスケジュールされたタスクが完了するまで待機するかどうかを設定します。 |
void | shutdown() 基礎となる ExecutorService でシャットダウンを実行します。 |
newThread
createThread, getDefaultThreadNamePrefix, getThreadGroup, getThreadNamePrefix, getThreadPriority, isDaemon, nextThreadName, setDaemon, setThreadGroup, setThreadGroupName, setThreadPriority
protected final Log logger
public void setThreadFactory(@Nullable java.util.concurrent.ThreadFactory threadFactory)
Java EE 7 または JSR-236 をサポートする他の管理環境では、JNDI に配置された ManagedThreadFactory を指定することを検討してください。デフォルトでは、"java:comp/DefaultManagedThreadFactory" にあります。検索に便利なように、XML の "jee:jndi-lookup" 名前空間要素またはプログラムによる JndiLocatorDelegate
を使用します。または、マネージスレッドファクトリが見つからない場合は、Spring の DefaultManagedAwareThreadFactory
をローカルスレッドにフォールバックすることを検討してください。
Executors.defaultThreadFactory()
, ManagedThreadFactory
, DefaultManagedAwareThreadFactory
public void setThreadNamePrefix(@Nullable java.lang.String threadNamePrefix)
CustomizableThreadCreator
CustomizableThreadCreator
の setThreadNamePrefix
public void setRejectedExecutionHandler(@Nullable java.util.concurrent.RejectedExecutionHandler rejectedExecutionHandler)
ThreadPoolExecutor.AbortPolicy
public void setWaitForTasksToCompleteOnShutdown(boolean waitForJobsToCompleteOnShutdown)
デフォルトは "false" であり、進行中のタスクを中断してキューをクリアすることですぐにシャットダウンします。シャットダウンフェーズが長くなりますが、完全に完了したタスクを希望する場合は、このフラグを "true" に切り替えます。
Spring のコンテナーのシャットダウンは、進行中のタスクが完了するまで継続することに注意してください。このエグゼキューターがコンテナーの残りの部分がシャットダウンし続ける前にブロックしてタスクの終了を待つようにする場合 - 例タスクに必要な他のリソースを維持するために、このプロパティの代わりに、またはこのプロパティに加えて、"awaitTerminationSeconds"
プロパティを設定します。
ExecutorService.shutdown()
, ExecutorService.shutdownNow()
public void setAwaitTerminationSeconds(int awaitTerminationSeconds)
デフォルトでは、このエグゼキューターはタスクの終了をまったく待ちません。すぐにシャットダウンして、進行中のタスクを中断し、残りのタスクキューをクリアします。または、"waitForTasksToCompleteOnShutdown"
フラグが true
に設定されている場合、キュー内のすべての残りのタスクだけでなく、進行中のすべてのタスクを並行して完全に実行し続けます。コンテナーの残りの部分にシャットダウンします。
いずれの場合でも、このプロパティを使用して終了待ち期間を指定すると、このエグゼキューターはタスクの終了を指定された時間(最大)待機します。経験則として、"waitForTasksToCompleteOnShutdown" を同時に true
に設定する場合は、キュー内の残りのすべてのタスクが実行されるため、ここで大幅に高いタイムアウトを指定します。デフォルトのシャットダウン動作とは対照的に現在、スレッドの中断に反応しないタスクを実行しています。
ExecutorService.shutdown()
, ExecutorService.awaitTermination(long, java.util.concurrent.TimeUnit)
public void setBeanName(java.lang.String name)
BeanNameAware
通常の Bean プロパティの設定後、ただし InitializingBean.afterPropertiesSet()
またはカスタム init メソッドなどの init コールバックの前に呼び出されます。
BeanNameAware
の setBeanName
name
- ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String)
メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。public void afterPropertiesSet()
initialize()
を呼び出します。InitializingBean
の afterPropertiesSet
initialize()
public void initialize()
protected abstract java.util.concurrent.ExecutorService initializeExecutor(java.util.concurrent.ThreadFactory threadFactory, java.util.concurrent.RejectedExecutionHandler rejectedExecutionHandler)
ExecutorService
インスタンスを作成します。afterPropertiesSet
によって呼び出されます。threadFactory
- 使用する ThreadFactoryrejectedExecutionHandler
- 使用する RejectedExecutionHandlerafterPropertiesSet()
public void destroy()
shutdown
を呼び出します。DisposableBean
の destroy
shutdown()
public void shutdown()
ExecutorService.shutdown()
, ExecutorService.shutdownNow()
protected void cancelRemainingTask(java.lang.Runnable task)
ExecutorService.shutdownNow()
から返された、実行を決して賞賛しなかった残りのタスクをキャンセルします。task
- キャンセルするタスク (通常は RunnableFuture
)shutdown()
, Future.cancel(boolean)