- すべての実装されたインタフェース:
Executor
,ExecutorService
,ScheduledExecutorService
public class ScheduledThreadPoolExecutor extends ThreadPoolExecutor implements ScheduledExecutorService
ThreadPoolExecutor
です。 複数のワーカー・スレッドが必要な場合、またはこのクラスが拡張するThreadPoolExecutor
にさらに柔軟性または機能が必要な場合は、Timer
よりもこのクラスを使用することをお薦めします。
遅延タスクは有効になるとすぐに実行されますが、有効になったあといつ開始されるかについては、リアルタイム保証がありません。 まったく同じ実行時間にスケジュール設定されたタスクは、送信の先入れ先出し(FIFO)順に有効になります。
送信されたタスクが、実行される前に取り消された場合は、実行が抑制されます。 デフォルトでは、このような取り消されたタスクは、その遅延時間が経過するまでワーク・キューから自動的には削除されません。 これにより、さらに検査や監視を行うことが可能になりますが、取り消されたタスクが無制限に保持される可能性もあります。 これを避けるには、setRemoveOnCancelPolicy(boolean)
を使用して、取消時に作業キューからタスクを即時に削除する必要があります。
scheduleAtFixedRate
またはscheduleWithFixedDelay
を介してスケジュールされた定期タスクの連続実行は重複しません。 各実行は異なるスレッドによって実行される可能性がありますが、以前の実行の効果は以降の実行の効果の前に発生します。
このクラスはThreadPoolExecutor
から継承されますが、継承されたチューニング・メソッドのいくつかはこのクラスにとって有効ではありません。 特に、これはcorePoolSize
スレッドとアンバウンド形式のキューを使用した固定サイズのプールとして機能するため、maximumPoolSize
を調整しても効果はありません。 さらに、corePoolSize
を0に設定したり、allowCoreThreadTimeOut
を使用したりしても、プールに実行可能になったタスクを処理するためのスレッドがない状態のままになる可能性があるため、ほとんど効果はありません。
ThreadPoolExecutor
と同様に、特に指定がない場合、このクラスはExecutors.defaultThreadFactory()
をデフォルトのスレッド・ファクトリとして使用し、ThreadPoolExecutor.AbortPolicy
をデフォルトの拒否された実行ハンドラとして使用します。
拡張の注意: このクラスはexecute
メソッドとsubmit
メソッドをオーバーライドして、タスク単位の遅延とスケジューリングを制御するための内部ScheduledFuture
オブジェクトを生成します。 機能を保護するために、サブクラスでこれらのメソッドをこれ以上オーバーライドする場合は、スーパークラス・バージョンを呼び出す必要があります。これにより、タスクの追加のカスタマイズが実質的に無効になります。 ただし、このクラスでは、代替のprotected拡張メソッドdecorateTask
(Runnable
とCallable
ごとに1つのバージョン)を提供します。これは、execute
、submit
、schedule
、scheduleAtFixedRate
、およびscheduleWithFixedDelay
で入力されたコマンドを実行するために使用される具象タスク型のカスタマイズに使用できます。 デフォルトでは、ScheduledThreadPoolExecutor
はFutureTask
を拡張するタスク型を使用します。 ただし次のような形式のサブクラスを使用して、変更または置換できます。
public class CustomScheduledExecutor extends ScheduledThreadPoolExecutor {
static class CustomTask<V> implements RunnableScheduledFuture<V> { ... }
protected <V> RunnableScheduledFuture<V> decorateTask(
Runnable r, RunnableScheduledFuture<V> task) {
return new CustomTask<V>(r, task);
}
protected <V> RunnableScheduledFuture<V> decorateTask(
Callable<V> c, RunnableScheduledFuture<V> task) {
return new CustomTask<V>(c, task);
}
// ... add constructors, etc.
}
- 導入されたバージョン:
- 1.5
-
ネストされたクラスのサマリー
クラス java.util.concurrent.ThreadPoolExecutorで宣言されたネストされたクラス/インタフェース
ThreadPoolExecutor.AbortPolicy, ThreadPoolExecutor.CallerRunsPolicy, ThreadPoolExecutor.DiscardOldestPolicy, ThreadPoolExecutor.DiscardPolicy
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 ScheduledThreadPoolExecutor(int corePoolSize)
指定されたコア・プール・サイズで、新しいScheduledThreadPoolExecutor
を作成します。ScheduledThreadPoolExecutor(int corePoolSize, RejectedExecutionHandler handler)
指定された初期パラメータを使って、新しいScheduledThreadPoolExecutor
を作成します。ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory)
指定された初期パラメータを使って、新しいScheduledThreadPoolExecutor
を作成します。ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory, RejectedExecutionHandler handler)
指定された初期パラメータを使って、新しいScheduledThreadPoolExecutor
を作成します。 -
メソッドのサマリー
修飾子と型 メソッド 説明 protected <V> RunnableScheduledFuture<V>
decorateTask(Runnable runnable, RunnableScheduledFuture<V> task)
runnableを実行するために使用するタスクを変更または置換します。protected <V> RunnableScheduledFuture<V>
decorateTask(Callable<V> callable, RunnableScheduledFuture<V> task)
呼出し可能レイアウトを実行するために使用するタスクを変更または置換します。void
execute(Runnable command)
要求された遅延がゼロで、command
を実行します。boolean
getContinueExistingPeriodicTasksAfterShutdownPolicy()
既存の定期的なタスクの実行を継続するかどうかに関するポリシーを取得します。このexecutorでshutdown
が実行されたときでも取得します。boolean
getExecuteExistingDelayedTasksAfterShutdownPolicy()
既存の遅延タスクを実行するかどうかに関するポリシーを取得します。このexecutorでshutdown
が実行されたときでも取得します。BlockingQueue<Runnable>
getQueue()
このexecutorで使用するタスク・キューを返します。boolean
getRemoveOnCancelPolicy()
取り消されたタスクを取消し時にワーク・キューからすぐに削除するかどうかに関するポリシーを取得します。ScheduledFuture<?>
schedule(Runnable command, long delay, TimeUnit unit)
指定された遅延後に有効になるワン・ショット・タスクを送信します。<V> ScheduledFuture<V>
schedule(Callable<V> callable, long delay, TimeUnit unit)
指定した遅延の後に有効になる、値を返すワン・ショット・タスクを送信します。ScheduledFuture<?>
scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
指定された初期遅延の後に最初に有効になり、続いて指定された期間で有効になる定期的なアクションを送信します。つまり、実行はinitialDelay
、initialDelay + period
、initialDelay + 2 * period
などの後に開始されます。ScheduledFuture<?>
scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
指定された初期遅延の後に最初に有効になる定期的なアクションを送信し、その後、1つの実行の終了と次の実行の開始の間の所定の遅延で送信します。void
setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean value)
既存の定期的なタスクの実行を継続するかどうかに関するポリシーを設定します。このexecutorでshutdown
が実行されたときでも設定します。void
setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean value)
既存の遅延タスクを実行するかどうかに関するポリシーを設定します。このexecutorでshutdown
が実行されたときでも取得します。void
setRemoveOnCancelPolicy(boolean value)
取り消されたタスクを取消し時にワーク・キューからすぐに削除するかどうかに関するポリシーを設定します。void
shutdown()
順序正しくシャットダウンを開始します。以前に送信されたタスクが実行されますが、新規タスクは受け入れられません。List<Runnable>
shutdownNow()
実行中のアクティブなタスクすべての停止を試み、待機中のタスクの処理を停止し、実行を待機していたタスクのリストを返します。Future<?>
submit(Runnable task)
実行用のRunnableタスクを送信し、そのタスクを表すFutureを返します。<T> Future<T>
submit(Runnable task, T result)
実行用のRunnableタスクを送信し、そのタスクを表すFutureを返します。<T> Future<T>
submit(Callable<T> task)
値を返す実行用タスクを送信して、保留状態のタスク結果を表すFutureを返します。クラス java.util.concurrent.ThreadPoolExecutorで宣言されたメソッド
afterExecute, allowCoreThreadTimeOut, allowsCoreThreadTimeOut, beforeExecute, finalize, getActiveCount, getCompletedTaskCount, getCorePoolSize, getKeepAliveTime, getLargestPoolSize, getMaximumPoolSize, getPoolSize, getRejectedExecutionHandler, getTaskCount, getThreadFactory, isTerminating, prestartAllCoreThreads, prestartCoreThread, purge, remove, setCorePoolSize, setKeepAliveTime, setMaximumPoolSize, setRejectedExecutionHandler, setThreadFactory, terminated, toString
クラス java.lang.Objectで宣言されたメソッド
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
インタフェース java.util.concurrent.ExecutorServiceで宣言されたメソッド
awaitTermination, invokeAll, invokeAll, invokeAny, invokeAny, isShutdown, isTerminated
-
コンストラクタの詳細
-
ScheduledThreadPoolExecutor
public ScheduledThreadPoolExecutor(int corePoolSize)指定されたコア・プール・サイズで、新しいScheduledThreadPoolExecutor
を作成します。- パラメータ:
corePoolSize
-allowCoreThreadTimeOut
が設定されていないかぎり、アイドルであってもプール内に維持されるスレッドの数- 例外:
IllegalArgumentException
-corePoolSize < 0
の場合
-
ScheduledThreadPoolExecutor
public ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory)指定された初期パラメータを使って、新しいScheduledThreadPoolExecutor
を作成します。- パラメータ:
corePoolSize
-allowCoreThreadTimeOut
が設定されていないかぎり、アイドルであってもプール内に維持されるスレッドの数threadFactory
- executorが新しいスレッドを作成するときに使用するファクトリ- 例外:
IllegalArgumentException
-corePoolSize < 0
の場合NullPointerException
-threadFactory
がnullである場合
-
ScheduledThreadPoolExecutor
public ScheduledThreadPoolExecutor(int corePoolSize, RejectedExecutionHandler handler)指定された初期パラメータを使って、新しいScheduledThreadPoolExecutor
を作成します。- パラメータ:
corePoolSize
-allowCoreThreadTimeOut
が設定されていないかぎり、アイドルであってもプール内に維持されるスレッドの数handler
- スレッドの境界およびキューの容量に達したため、実行がブロックされたときに使用するハンドラ- 例外:
IllegalArgumentException
-corePoolSize < 0
の場合NullPointerException
-handler
がnullである場合
-
ScheduledThreadPoolExecutor
public ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory, RejectedExecutionHandler handler)指定された初期パラメータを使って、新しいScheduledThreadPoolExecutor
を作成します。- パラメータ:
corePoolSize
-allowCoreThreadTimeOut
が設定されていないかぎり、アイドルであってもプール内に維持されるスレッドの数threadFactory
- executorが新しいスレッドを作成するときに使用するファクトリhandler
- スレッドの境界およびキューの容量に達したため、実行がブロックされたときに使用するハンドラ- 例外:
IllegalArgumentException
-corePoolSize < 0
の場合NullPointerException
-threadFactory
またはhandler
がnullの場合
-
-
メソッドの詳細
-
decorateTask
protected <V> RunnableScheduledFuture<V> decorateTask(Runnable runnable, RunnableScheduledFuture<V> task)runnableを実行するために使用するタスクを変更または置換します。 このメソッドは、内部タスクを管理するための具象クラスをオーバーライドするために使用できます。 デフォルトの実装は単に指定されたタスクを返します。- 型パラメータ:
V
- タスクの結果の型- パラメータ:
runnable
- 送信されたRunnabletask
- Runnableを実行するために作成されたタスク- 戻り値:
- runnableを実行できるタスク
- 導入されたバージョン:
- 1.6
-
decorateTask
protected <V> RunnableScheduledFuture<V> decorateTask(Callable<V> callable, RunnableScheduledFuture<V> task)呼出し可能レイアウトを実行するために使用するタスクを変更または置換します。 このメソッドは、内部タスクを管理するための具象クラスをオーバーライドするために使用できます。 デフォルトの実装は単に指定されたタスクを返します。- 型パラメータ:
V
- タスクの結果の型- パラメータ:
callable
- 送信されたCallabletask
- Callableを実行するために作成されたタスク- 戻り値:
- 呼出し可能レイアウトを実行できるタスク
- 導入されたバージョン:
- 1.6
-
schedule
public ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)インタフェースからコピーされた説明:ScheduledExecutorService
指定された遅延後に有効になるワン・ショット・タスクを送信します。- 定義:
schedule
、インタフェース:ScheduledExecutorService
- パラメータ:
command
- 実行するタスクdelay
- 現在から遅延実行までの時間unit
- delayパラメータの時間単位- 戻り値:
- タスクの保留状態の完了を表すScheduledFuture。その
get()
メソッドは完了時にnull
を返す - 例外:
RejectedExecutionException
- タスクの実行をスケジュールできない場合NullPointerException
- コマンドまたはユニットがヌルの場合
-
schedule
public <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)インタフェースからコピーされた説明:ScheduledExecutorService
指定した遅延の後に有効になる、値を返すワン・ショット・タスクを送信します。- 定義:
schedule
、インタフェース:ScheduledExecutorService
- 型パラメータ:
V
- 呼出し可能タスクの結果の型- パラメータ:
callable
- 実行する関数delay
- 現在から遅延実行までの時間unit
- delayパラメータの時間単位- 戻り値:
- 結果を抽出または取り消すために使用できるScheduledFuture
- 例外:
RejectedExecutionException
- タスクの実行をスケジュールできない場合NullPointerException
- 呼び出し可能またはユニットがnullの場合
-
scheduleAtFixedRate
public ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)指定された初期遅延の後に最初に有効になり、続いて指定された期間で有効になる定期的なアクションを送信します。つまり、実行はinitialDelay
、initialDelay + period
、initialDelay + 2 * period
などの後に開始されます。タスク実行のシーケンスは、次の例外的な完了が発生するまで無期限に続きます:
- タスクは返された未来を介して「明示的に取消された」です。
- メソッド
shutdown()
が呼び出され、「シャットダウン後に続行するかどうかに関するポリシー」がtrueに設定されていないか、またはメソッドshutdownNow()
が呼び出されています。タスクの取消も発生します。 - タスクの実行によって例外がスローされます。 この場合、返された未来の
get
を呼び出すと例外がその原因としてExecutionException
がスローされます。
isDone()
へのその後の呼び出しは、true
を返します。このタスクを実行するのに指定の期間(period)より長い時間がかかる場合、以降の実行は遅れて開始されることがありますが、並行して実行はされません。
- 定義:
scheduleAtFixedRate
、インタフェース:ScheduledExecutorService
- パラメータ:
command
- 実行するタスクinitialDelay
- 最初の遅延実行までの時間period
- 連続する実行の間隔unit
- initialDelayおよびperiodパラメータの時間単位- 戻り値:
- 一連の繰り返しタスクの保留中の完了を表すScheduledFuture。 将来の
get()
メソッドは決して正常に戻らず、タスクの取消やタスクの実行の異常終了時に例外をスローします。 - 例外:
RejectedExecutionException
- タスクの実行をスケジュールできない場合NullPointerException
- コマンドまたはユニットがヌルの場合IllegalArgumentException
- periodが0以下である場合
-
scheduleWithFixedDelay
public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)指定された初期遅延の後に最初に有効になる定期的なアクションを送信し、その後、1つの実行の終了と次の実行の開始の間の所定の遅延で送信します。タスク実行のシーケンスは、次の例外的な完了が発生するまで無期限に続きます:
- タスクは返された未来を介して「明示的に取消された」です。
- メソッド
shutdown()
が呼び出され、「シャットダウン後に続行するかどうかに関するポリシー」がtrueに設定されていないか、またはメソッドshutdownNow()
が呼び出されています。タスクの取消も発生します。 - タスクの実行によって例外がスローされます。 この場合、返された未来の
get
を呼び出すと例外がその原因としてExecutionException
がスローされます。
isDone()
へのその後の呼び出しは、true
を返します。- 定義:
scheduleWithFixedDelay
、インタフェース:ScheduledExecutorService
- パラメータ:
command
- 実行するタスクinitialDelay
- 最初の遅延実行までの時間delay
- 実行の終了後から次の開始までの遅延unit
- initialDelayおよびdelayパラメータの時間単位- 戻り値:
- 一連の繰り返しタスクの保留中の完了を表すScheduledFuture。 将来の
get()
メソッドは決して正常に戻らず、タスクの取消やタスクの実行の異常終了時に例外をスローします。 - 例外:
RejectedExecutionException
- タスクの実行をスケジュールできない場合NullPointerException
- コマンドまたはユニットがヌルの場合IllegalArgumentException
- delayが0以下である場合
-
execute
public void execute(Runnable command)要求された遅延がゼロで、command
を実行します。 これにはschedule(command, 0, anyUnit)
と同等の効果があります。 キューの検査やshutdownNow
によって返されたリストの検査では、command
自体ではなく、遅延が0のScheduledFuture
にアクセスすることに注意してください。ScheduledFuture
オブジェクトを使用した結果として、command
が突然終了した場合でも、2番目のThrowable
引数をnullにしてafterExecute
が常に呼び出されます。 代わりに、このようなタスクによってスローされたThrowable
は、Future.get()
を使用して取得できます。- 定義:
execute
、インタフェース:Executor
- オーバーライド:
execute
、クラス:ThreadPoolExecutor
- パラメータ:
command
- 実行するタスク- 例外:
RejectedExecutionException
-RejectedExecutionHandler
の判断で、executorがシャットダウンされたため、タスクを実行のために受け入れることができない場合NullPointerException
-command
がnullである場合
-
submit
インタフェースからコピーされた説明:ExecutorService
実行用のRunnableタスクを送信し、そのタスクを表すFutureを返します。 Futureのget
メソッドは、正常に
完了した時点でnullを返します。- 定義:
submit
、インタフェース:ExecutorService
- オーバーライド:
submit
、クラス:AbstractExecutorService
- パラメータ:
task
- 送信するタスク- 戻り値:
- タスクの保留完了を表すFuture
- 例外:
RejectedExecutionException
- タスクの実行をスケジュールできない場合NullPointerException
- タスクがnullの場合
-
submit
インタフェースからコピーされた説明:ExecutorService
実行用のRunnableタスクを送信し、そのタスクを表すFutureを返します。 Futureのget
メソッドは、正常に完了した時点で指定された結果を返します。- 定義:
submit
、インタフェース:ExecutorService
- オーバーライド:
submit
、クラス:AbstractExecutorService
- 型パラメータ:
T
- 結果の型- パラメータ:
task
- 送信するタスクresult
- 返す結果- 戻り値:
- タスクの保留完了を表すFuture
- 例外:
RejectedExecutionException
- タスクの実行をスケジュールできない場合NullPointerException
- タスクがnullの場合
-
submit
インタフェースからコピーされた説明:ExecutorService
値を返す実行用タスクを送信して、保留状態のタスク結果を表すFutureを返します。 Futureのget
メソッドは、正常に完了した時点でタスクの結果を返します。タスクの待機をただちにブロックする場合は、
result = exec.submit(aCallable).get();
の形式の構築を使用できます。注:
Executors
クラスには、クロージャに似たほかの一般オブジェクトを変換できるメソッド・セットが含まれます。たとえば、PrivilegedAction
をCallable
形式に変換して、送信可能にすることができます。- 定義:
submit
、インタフェース:ExecutorService
- オーバーライド:
submit
、クラス:AbstractExecutorService
- 型パラメータ:
T
- タスクの結果の型- パラメータ:
task
- 送信するタスク- 戻り値:
- タスクの保留完了を表すFuture
- 例外:
RejectedExecutionException
- タスクの実行をスケジュールできない場合NullPointerException
- タスクがnullの場合
-
setContinueExistingPeriodicTasksAfterShutdownPolicy
public void setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean value)既存の定期的なタスクの実行を継続するかどうかに関するポリシーを設定します。このexecutorでshutdown
が実行されたときでも設定します。 この場合、すでにシャットダウンされている場合、shutdownNow
またはポリシーがfalse
に設定されるまで、実行は継続されます。 この値はデフォルトでfalse
です。- パラメータ:
value
-true
の場合はシャットダウン後に続行し、それ以外の場合は続行しない- 関連項目:
getContinueExistingPeriodicTasksAfterShutdownPolicy()
-
getContinueExistingPeriodicTasksAfterShutdownPolicy
public boolean getContinueExistingPeriodicTasksAfterShutdownPolicy()既存の定期的なタスクの実行を継続するかどうかに関するポリシーを取得します。このexecutorでshutdown
が実行されたときでも取得します。 この場合、すでにシャットダウンされている場合、shutdownNow
またはポリシーがfalse
に設定されるまで、実行は継続されます。 この値はデフォルトでfalse
です。- 戻り値:
- シャットダウン後に続行する場合は
true
- 関連項目:
setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean)
-
setExecuteExistingDelayedTasksAfterShutdownPolicy
public void setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean value)既存の遅延タスクを実行するかどうかに関するポリシーを設定します。このexecutorでshutdown
が実行されたときでも取得します。 この場合、これらのタスクが終了するのは、shutdownNow
の実行時か、すでにシャットダウンが実行されポリシーをfalse
に設定したあとに限られます。 この値はデフォルトでtrue
です。- パラメータ:
value
-true
の場合はシャットダウン後に実行し、それ以外の場合は実行しない- 関連項目:
getExecuteExistingDelayedTasksAfterShutdownPolicy()
-
getExecuteExistingDelayedTasksAfterShutdownPolicy
public boolean getExecuteExistingDelayedTasksAfterShutdownPolicy()既存の遅延タスクを実行するかどうかに関するポリシーを取得します。このexecutorでshutdown
が実行されたときでも取得します。 この場合、これらのタスクが終了するのは、shutdownNow
の実行時か、すでにシャットダウンが実行されポリシーをfalse
に設定したあとに限られます。 この値はデフォルトでtrue
です。- 戻り値:
- シャットダウン後に実行する場合は
true
- 関連項目:
setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean)
-
setRemoveOnCancelPolicy
public void setRemoveOnCancelPolicy(boolean value)取り消されたタスクを取消し時にワーク・キューからすぐに削除するかどうかに関するポリシーを設定します。 この値はデフォルトでfalse
です。- パラメータ:
value
-true
の場合は取消し時に削除し、それ以外の場合は削除しない。- 導入されたバージョン:
- 1.7
- 関連項目:
getRemoveOnCancelPolicy()
-
getRemoveOnCancelPolicy
public boolean getRemoveOnCancelPolicy()取り消されたタスクを取消し時にワーク・キューからすぐに削除するかどうかに関するポリシーを取得します。 この値はデフォルトでfalse
です。- 戻り値:
- 取り消されたタスクがただちにキューから削除される場合は
true
- 導入されたバージョン:
- 1.7
- 関連項目:
setRemoveOnCancelPolicy(boolean)
-
shutdown
public void shutdown()順序正しくシャットダウンを開始します。以前に送信されたタスクが実行されますが、新規タスクは受け入れられません。 シャットダウン後に呼出しを実行しても、効果はありません。このメソッドは、以前に送信されたタスクが実行を完了するのを待機しません。 これを実行するには、
awaitTermination
を使ってください。ExecuteExistingDelayedTasksAfterShutdownPolicy
がfalse
に設定されていた場合、遅延時間が経過していない既存の遅延タスクは取り消されます。 また、ContinueExistingPeriodicTasksAfterShutdownPolicy
がtrue
に設定されていないかぎり、既存の定期的なタスクの以後の実行は取り消されます。- 定義:
shutdown
、インタフェース:ExecutorService
- オーバーライド:
shutdown
、クラス:ThreadPoolExecutor
- 例外:
SecurityException
- セキュリティ・マネージャが存在する状況でこのExecutorServiceのシャットダウンを実行すると、呼出し側には変更を許可しないスレッドを操作できる場合。これは、RuntimePermission
("modifyThread")
を保持しないか、セキュリティ・マネージャのcheckAccess
メソッドがアクセスを拒否するためである。
-
shutdownNow
実行中のアクティブなタスクすべての停止を試み、待機中のタスクの処理を停止し、実行を待機していたタスクのリストを返します。 これらのタスクは、このメソッドから戻るときに、タスク・キューからドレイン(削除)されます。このメソッドは、アクティブに実行中のタスクが終了するのを待機しません。 これを実行するには、
awaitTermination
を使ってください。実行中のアクティブなタスク処理を停止するために最善の努力をすること以上の保証はありません。 この実装は、
Thread.interrupt()
を介してタスクを中断します。割り込みに応答しないタスクは決して終了しない可能性があります。- 定義:
shutdownNow
、インタフェース:ExecutorService
- オーバーライド:
shutdownNow
、クラス:ThreadPoolExecutor
- 戻り値:
- 実行が開始されなかったタスクのリスト。 このリストの各要素は
ScheduledFuture
です。schedule
メソッドの1つを介してサブミットされたタスクの場合、要素は返されたScheduledFuture
と同じになります。execute
を使用して送信されたタスクの場合、要素はゼロ遅延ScheduledFuture
になります。 - 例外:
SecurityException
- セキュリティ・マネージャが存在する状況でこのExecutorServiceのシャットダウンを実行すると、呼出し側には変更を許可しないスレッドを操作できる場合。これは、RuntimePermission
("modifyThread")
を保持しないか、セキュリティ・マネージャのcheckAccess
メソッドがアクセスを拒否するためである。
-
getQueue
public BlockingQueue<Runnable> getQueue()このexecutorで使用するタスク・キューを返します。 タスク・キューへのアクセスは、デバッグおよび監視を主な目的としています。 このキューは、アクティブに使用されている可能性があります。 タスク・キューを取り出しても、キューに入っているタスクの実行は妨げられません。このキューの各要素は
ScheduledFuture
です。schedule
メソッドの1つを介してサブミットされたタスクの場合、要素は返されたScheduledFuture
と同じになります。execute
を使用して送信されたタスクの場合、要素はゼロ遅延ScheduledFuture
になります。このキューに対する反復処理では、タスクが実行順序でトラバースされることは保証されません。
- オーバーライド:
getQueue
、クラス:ThreadPoolExecutor
- 戻り値:
- タスク・キュー
-