JavaTM 2 Platform
Standard Ed. 5.0

java.util.concurrent
クラス ScheduledThreadPoolExecutor

java.lang.Object
  上位を拡張 java.util.concurrent.AbstractExecutorService
      上位を拡張 java.util.concurrent.ThreadPoolExecutor
          上位を拡張 java.util.concurrent.ScheduledThreadPoolExecutor
すべての実装されたインタフェース:
Executor, ExecutorService, ScheduledExecutorService

public class ScheduledThreadPoolExecutor
extends ThreadPoolExecutor
implements ScheduledExecutorService

指定された遅延後または周期的に実行するためのコマンドを追加スケジュール可能な ThreadPoolExecutor。複数のワークスレッドを必要とする場合や、ThreadPoolExecutor (このクラスを拡張する) の提供する柔軟性や機能が必要な場合、このクラスを Timer よりも優先して使用します。

遅延タスクはそれが有効になり次第実行されますが、有効になった後いつ開始されるかに関してリアルタイムの保証はありません。実行時間が正確に同じにスケジュールされたタスクは、先入れ先出し (FIFO) の送信順に有効にされます。

このクラスは ThreadPoolExecutor から継承されますが、継承したチューニングメソッドのいくつかは有用ではありません。特に、corePoolSize スレッドおよびアンバウンド形式のキューを使用する固定サイズのプールとして動作するため、maximumPoolSize を調整しても有益な結果は得られません。

導入されたバージョン:
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 を作成します。
 
メソッドの概要
 void execute(Runnable command)
          ゼロの遅延要求でコマンドを実行します。
 boolean getContinueExistingPeriodicTasksAfterShutdownPolicy()
          この executor で shutdown が実行された場合でも既存の周期タスクの実行を継続するかどうかに関するポリシーを取得します。
 boolean getExecuteExistingDelayedTasksAfterShutdownPolicy()
          この executor で shutdown が実行された場合でも既存の遅延タスクを実行するかどうかに関するポリシーを取得します。
 BlockingQueue<Runnable> getQueue()
          この executor が使用するタスクキューを返します。
 boolean remove(Runnable task)
          このタスクが存在する場合、executor の内部キューから削除し、まだ起動していないなら実行されないようにします。
<V> ScheduledFuture<V>
schedule(Callable<V> callable, long delay, TimeUnit unit)
          指定された遅延後に有効になる ScheduledFuture を作成および実行します。
 ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)
          指定された遅延後に有効になる単発的なアクションを作成および実行します。
 ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
          指定された初期遅延後に最初に有効になり、以降は指定された期間後に有効になる周期的なアクションを作成および実行します。
 ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
          指定された初期遅延後に最初に有効になり、以降は実行終了から次の実行開始までの指定遅延後に有効になる周期的なアクションを作成および実行します。
 void setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean value)
          この executor で shutdown が実行された場合でも既存の周期タスクの実行を継続するかどうかに関するポリシーを設定します。
 void setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean value)
          この executor で shutdown が実行された場合でも既存の遅延タスクを実行するかどうかに関するポリシーを設定します。
 void shutdown()
          順序に従って実行されるシャットダウンを開始します。
 List<Runnable> shutdownNow()
          実行中のアクティブなタスクすべての停止を試み、待機中のタスクの処理を停止し、実行を待機していたタスクのリストを返します。
<T> Future<T>
submit(Callable<T> task)
          値を返す実行タスクを送信し、保留中のタスク結果を表す Future を返します。
 Future<?> submit(Runnable task)
          実行用の Runnable タスクを送信し、そのタスクを表す Future を返します。
<T> Future<T>
submit(Runnable task, T result)
          実行用の Runnable タスクを送信して、完了時に指定された結果を返すタスクを表す Future を返します。
 
クラス java.util.concurrent.ThreadPoolExecutor から継承されたメソッド
afterExecute, awaitTermination, beforeExecute, finalize, getActiveCount, getCompletedTaskCount, getCorePoolSize, getKeepAliveTime, getLargestPoolSize, getMaximumPoolSize, getPoolSize, getRejectedExecutionHandler, getTaskCount, getThreadFactory, isShutdown, isTerminated, isTerminating, prestartAllCoreThreads, prestartCoreThread, purge, setCorePoolSize, setKeepAliveTime, setMaximumPoolSize, setRejectedExecutionHandler, setThreadFactory, terminated
 
クラス java.util.concurrent.AbstractExecutorService から継承されたメソッド
invokeAll, invokeAll, invokeAny, invokeAny
 
クラス java.lang.Object から継承されたメソッド
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
インタフェース java.util.concurrent.ExecutorService から継承されたメソッド
awaitTermination, invokeAll, invokeAll, invokeAny, invokeAny, isShutdown, isTerminated
 

コンストラクタの詳細

ScheduledThreadPoolExecutor

public ScheduledThreadPoolExecutor(int corePoolSize)
指定したコアプールサイズで、新規 ScheduledThreadPoolExecutor を作成します。

パラメータ:
corePoolSize - プール内に保持するスレッドの数 (アイドル状態のスレッドも含む)
例外:
IllegalArgumentException - corePoolSize がゼロ以下の場合

ScheduledThreadPoolExecutor

public ScheduledThreadPoolExecutor(int corePoolSize,
                                   ThreadFactory threadFactory)
指定された初期パラメータを使って、新しい ScheduledThreadPoolExecutor を作成します。

パラメータ:
corePoolSize - プール内に保持するスレッドの数 (アイドル状態のスレッドも含む)
threadFactory - executor が新規スレッドを作成する際に使用するファクトリ
例外:
NullPointerException - threadFactory が null の場合

ScheduledThreadPoolExecutor

public ScheduledThreadPoolExecutor(int corePoolSize,
                                   RejectedExecutionHandler handler)
指定された初期パラメータを使って、新しい ScheduledThreadPoolExecutor を作成します。

パラメータ:
corePoolSize - プール内に保持するスレッドの数 (アイドル状態のスレッドも含む)
handler - スレッドが制限に達するか、キューが容量に達したために実行がブロックされた場合に使用するハンドラ
例外:
NullPointerException - ハンドラが null の場合

ScheduledThreadPoolExecutor

public ScheduledThreadPoolExecutor(int corePoolSize,
                                   ThreadFactory threadFactory,
                                   RejectedExecutionHandler handler)
指定された初期パラメータを使って、新しい ScheduledThreadPoolExecutor を作成します。

パラメータ:
corePoolSize - プール内に保持するスレッドの数 (アイドル状態のスレッドも含む)
threadFactory - executor が新規スレッドを作成する際に使用するファクトリ
handler - スレッドが制限に達するか、キューが容量に達したために実行がブロックされた場合に使用するハンドラ
例外:
NullPointerException - threadFactory またはハンドラが null の場合
メソッドの詳細

remove

public boolean remove(Runnable task)
クラス ThreadPoolExecutor の記述:
このタスクが存在する場合、executor の内部キューから削除し、まだ起動していないなら実行されないようにします。

このメソッドは、取り消しスキーマの一部として有効に使用できます。内部キューに配置される前に他の形式に変換されたタスクは、削除に失敗する場合があります。たとえば、submit を使用して入力されたタスクは、Future 状態を維持する形式に変換される可能性があります。ただし、この場合は、ThreadPoolExecutor.purge() メソッドを使用してこれらの取り消された Future を削除できます。

オーバーライド:
クラス ThreadPoolExecutor 内の remove
パラメータ:
task - 削除するタスク
戻り値:
タスクが削除された場合は true

schedule

public ScheduledFuture<?> schedule(Runnable command,
                                   long delay,
                                   TimeUnit unit)
インタフェース ScheduledExecutorService の記述:
指定された遅延後に有効になる単発的なアクションを作成および実行します。

定義:
インタフェース ScheduledExecutorService 内の schedule
パラメータ:
command - 実行するタスク
delay - 現在からの実行遅延時間
unit - 遅延パラメータの時間単位
戻り値:
保留状態のタスク完了を表す Future。その get() メソッドは、完了時に null を返す

schedule

public <V> ScheduledFuture<V> schedule(Callable<V> callable,
                                       long delay,
                                       TimeUnit unit)
インタフェース ScheduledExecutorService の記述:
指定された遅延後に有効になる ScheduledFuture を作成および実行します。

定義:
インタフェース ScheduledExecutorService 内の schedule
パラメータ:
callable - 実行する関数
delay - 現在からの実行遅延時間
unit - 遅延パラメータの時間単位
戻り値:
結果の抽出または取り消しに使用可能な ScheduledFuture

scheduleAtFixedRate

public ScheduledFuture<?> scheduleAtFixedRate(Runnable command,
                                              long initialDelay,
                                              long period,
                                              TimeUnit unit)
インタフェース ScheduledExecutorService の記述:
指定された初期遅延後に最初に有効になり、以降は指定された期間後に有効になる周期的なアクションを作成および実行します。つまり、initialDelay 後に実行が開始され、initialDelay+period 後、initialDelay + 2 * period 後、という具合に実行されてゆきます。いずれかのタスク実行が例外に遭遇すると、後続の実行は抑制されます。それ以外でタスクが終了するのは、executor が取り消されるか終了する場合だけです。

定義:
インタフェース ScheduledExecutorService 内の scheduleAtFixedRate
パラメータ:
command - 実行するタスク
initialDelay - 最初の実行の遅延時間
period - 後続の実行間隔
unit - initialDelay および period パラメータの時間単位
戻り値:
タスクの保留完了を表す Future。その get() メソッドは、取り消し時に例外をスローする

scheduleWithFixedDelay

public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command,
                                                 long initialDelay,
                                                 long delay,
                                                 TimeUnit unit)
インタフェース ScheduledExecutorService の記述:
指定された初期遅延後に最初に有効になり、以降は実行終了から次の実行開始までの指定遅延後に有効になる周期的なアクションを作成および実行します。いずれかのタスク実行が例外に遭遇すると、後続の実行は抑制されます。それ以外でタスクが終了するのは、executor が取り消されるか終了する場合だけです。

定義:
インタフェース ScheduledExecutorService 内の scheduleWithFixedDelay
パラメータ:
command - 実行するタスク
initialDelay - 最初の実行の遅延時間
delay - 実行終了から次の実行開始までの遅延
unit - initialDelay および delay パラメータの時間単位
戻り値:
タスクの保留完了を表す Future。その get() メソッドは、取り消し時に例外をスローする

execute

public void execute(Runnable command)
ゼロの遅延要求でコマンドを実行します。これは、schedule(command, 0, anyUnit) と同じ効果が得られます。shutdownNow により返されるキューおよびリストの検査では、command 自体ではなく、遅延ゼロの ScheduledFuture へのアクセスが行われます。

定義:
インタフェース Executor 内の execute
オーバーライド:
クラス ThreadPoolExecutor 内の execute
パラメータ:
command - 実行するタスク
例外:
RejectedExecutionException - executor がシャットダウンしたためにタスクを受け入れて実行できない場合、RejectedExecutionHandler の判断でスローされる
NullPointerException - コマンドが null の場合

submit

public Future<?> submit(Runnable task)
インタフェース ExecutorService の記述:
実行用の Runnable タスクを送信し、そのタスクを表す Future を返します。

定義:
インタフェース ExecutorService 内の submit
オーバーライド:
クラス AbstractExecutorService 内の submit
パラメータ:
task - 送信するタスク
戻り値:
保留状態のタスク完了を表す Future。その get() メソッドは、完了時に null を返す

submit

public <T> Future<T> submit(Runnable task,
                            T result)
インタフェース ExecutorService の記述:
実行用の Runnable タスクを送信して、完了時に指定された結果を返すタスクを表す Future を返します。

定義:
インタフェース ExecutorService 内の submit
オーバーライド:
クラス AbstractExecutorService 内の submit
パラメータ:
task - 送信するタスク
result - 返す結果
戻り値:
タスクの保留完了を表す Future。その get() メソッドは、完了時に指定された結果を返す

submit

public <T> Future<T> submit(Callable<T> task)
インタフェース ExecutorService の記述:
値を返す実行タスクを送信し、保留中のタスク結果を表す Future を返します。

タスクの待機をただちにブロックする場合は、result = exec.submit(aCallable).get(); の形式で指定できます。

注: Executors クラスには、クロージャに似た他の一般オブジェクトを変換可能なメソッドセット (たとえば、PrivilegedAction を送信可能な Callable 形式に変換できる) が含まれます。

定義:
インタフェース ExecutorService 内の submit
オーバーライド:
クラス AbstractExecutorService 内の submit
パラメータ:
task - 送信するタスク
戻り値:
タスクの保留完了を表す Future

setContinueExistingPeriodicTasksAfterShutdownPolicy

public void setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean value)
この executor で shutdown が実行された場合でも既存の周期タスクの実行を継続するかどうかに関するポリシーを設定します。この場合、タスクが終了するのは、shutdownNow の実行時、またはシャットダウンが完了している場合にはポリシーを false に設定したあとだけです。この値のデフォルトは false です。

パラメータ:
value - true の場合にはシャットダウン後に続行する。false の場合は続行しない
関連項目:
getExecuteExistingDelayedTasksAfterShutdownPolicy()

getContinueExistingPeriodicTasksAfterShutdownPolicy

public boolean getContinueExistingPeriodicTasksAfterShutdownPolicy()
この executor で shutdown が実行された場合でも既存の周期タスクの実行を継続するかどうかに関するポリシーを取得します。この場合、タスクが終了するのは、shutdownNow の実行時、またはシャットダウンが完了している場合にはポリシーを false に設定したあとだけです。この値のデフォルトは false です。

戻り値:
シャットダウン後に続行する場合は true
関連項目:
setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean)

setExecuteExistingDelayedTasksAfterShutdownPolicy

public void setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean value)
この executor で shutdown が実行された場合でも既存の遅延タスクを実行するかどうかに関するポリシーを設定します。この場合、タスクが終了するのは、shutdownNow の実行時、またはシャットダウンが完了している場合にはポリシーを false に設定したあとだけです。この値のデフォルトは false です。

パラメータ:
value - true の場合にはシャットダウン後に実行します。false の場合は実行しません。
関連項目:
getExecuteExistingDelayedTasksAfterShutdownPolicy()

getExecuteExistingDelayedTasksAfterShutdownPolicy

public boolean getExecuteExistingDelayedTasksAfterShutdownPolicy()
この executor で shutdown が実行された場合でも既存の遅延タスクを実行するかどうかに関するポリシーを取得します。この場合、タスクが終了するのは、shutdownNow の実行時、またはシャットダウンが完了している場合にはポリシーを false に設定したあとだけです。この値のデフォルトは false です。

戻り値:
シャットダウン後に実行する場合は true
関連項目:
setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean)

shutdown

public void shutdown()
順序に従って実行されるシャットダウンを開始します。この場合、以前に送信されたタスクが実行され、新規タスクは受け入れられません。ExecuteExistingDelayedTasksAfterShutdownPolicyfalse に設定されると、期限を超過していない既存の遅延タスクが取り消されます。ContinueExistingPeriodicTasksAfterShutdownPolicytrue に設定されると、既存の周期タスクの将来の実行が取り消されます。

定義:
インタフェース ExecutorService 内の shutdown
オーバーライド:
クラス ThreadPoolExecutor 内の shutdown

shutdownNow

public List<Runnable> shutdownNow()
実行中のアクティブなタスクすべての停止を試み、待機中のタスクの処理を停止し、実行を待機していたタスクのリストを返します。

実行中のアクティブなタスク処理を停止するために最善の努力をすること以上の保証はありません。この実装では Thread.interrupt() を介してタスクが取り消されるため、タスクが割り込みに対する応答をマスクするか失敗すると、タスクが終了しなくなる可能性があります。

定義:
インタフェース ExecutorService 内の shutdownNow
オーバーライド:
クラス ThreadPoolExecutor 内の shutdownNow
戻り値:
実行が決して開始されないタスクのリスト。このリストの各要素は ScheduledFuture であり、execute を使用して送信されるタスクが含まれる。これらは、遅延ゼロの ScheduledFuture の基盤としてスケジューリングで使用される

getQueue

public BlockingQueue<Runnable> getQueue()
この executor が使用するタスクキューを返します。このキューの各要素は ScheduledFuture であり、execute を使用して送信されるタスクが含まれます。これらは、遅延ゼロの ScheduledFuture の基盤としてスケジューリングで使用されます。このキューで使用される反復子がタスクの実行順にタスクをトラバースすることは、保証されていません。

オーバーライド:
クラス ThreadPoolExecutor 内の getQueue
戻り値:
タスクキュー

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。