ScheduledThreadPoolExecutorクラス
java.util.concurrent.ScheduledThreadPoolExecutorは、ThreadPoolExecutorのサブクラスであり、指定された遅延後に実行するコマンド、または定期的に実行するコマンドを追加でスケジュールできます。
ScheduledThreadPoolExecutorメソッド
シニア番号 | 方法と説明 |
---|---|
1 | protected <V> RunnableScheduledFuture<V> decorateTask(Callable<V> callable, RunnableScheduledFuture<V> task) 呼び出し可能オブジェクトの実行に使用されるタスクを変更または置換します。 |
2 | protected <V> RunnableScheduledFuture<V> decorateTask(Runnable runnable, RunnableScheduledFuture<V> task) ランナブルの実行に使用されるタスクを変更または置換します。 |
3 | void execute(Runnable command) 必要な遅延なしでコマンドを実行します。 |
4 | boolean getContinueExistingPeriodicTasksAfterShutdownPolicy() このエグゼキュータがシャットダウンされた場合でも、既存の定期的なタスクを実行し続けるかどうかに関するポリシーを取得します。 |
5 | boolean getExecuteExistingDelayedTasksAfterShutdownPolicy() このエグゼキュータがシャットダウンされている場合でも、既存の遅延タスクを実行するかどうかに関するポリシーを取得します。 |
6 | BlockingQueue<Runnable> getQueue() このエグゼキュータが使用するタスクキューを返します。 |
7 | boolean getRemoveOnCancelPolicy() キャンセルされたタスクをキャンセル時にワークキューからすぐに削除するかどうかに関するポリシーを取得します。 |
8 | <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit) 指定された遅延後に有効になるScheduledFutureを作成して実行します。 |
9 | ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit) 指定された遅延後に有効になるワンショットアクションを作成して実行します。 |
10 | ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) 指定された初期遅延の後に最初に有効になり、その後指定された期間で有効になる定期的なアクションを作成して実行します。つまり、実行は、initialDelay、initialDelay + period、initialDelay + 2 *期間のように開始されます。 |
11 | ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) 指定された初期遅延の後に最初に有効になり、その後、ある実行の終了から次の実行の開始までの間に指定された遅延が発生する定期的なアクションを作成して実行します。 |
12 | void setContinueExistingPeriodicTasksAfterShutdownPolicy (boolean value) このエグゼキュータがシャットダウンされた場合でも、既存の定期的なタスクを実行し続けるかどうかに関するポリシーを設定します。 |
13 | void setExecuteExistingDelayedTasksAfterShutdownPolicy (boolean value) このエグゼキュータがシャットダウンされている場合でも、既存の遅延タスクを実行するかどうかに関するポリシーを設定します。 |
14 | void setRemoveOnCancelPolicy(boolean value) キャンセルされたタスクをキャンセル時にワークキューからすぐに削除するかどうかに関するポリシーを設定します。 |
15 | void shutdown() 以前に送信されたタスクが実行される正常なシャットダウンを開始しますが、新しいタスクは受け入れられません。 |
16 | List<Runnable> shutdownNow() アクティブに実行されているすべてのタスクを停止し、待機中のタスクの処理を停止し、実行を待機していたタスクのリストを返します。 |
17 | <T> Future<T> submit(Callable<T> task) 実行のために値を返すタスクを送信し、タスクの保留中の結果を表すFutureを返します。 |
18 | Future<?> submit(Runnable task) 実行可能なタスクを実行のために送信し、そのタスクを表すFutureを返します。 |
19 | <T> Future<T> submit(Runnable task, T result) 実行可能なタスクを実行のために送信し、そのタスクを表すFutureを返します。 |
例
次のTestThreadプログラムは、スレッドベースの環境でのScheduledThreadPoolExecutorインターフェイスの使用法を示しています。
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
public class TestThread {
public static void main(final String[] arguments) throws InterruptedException {
final ScheduledThreadPoolExecutor scheduler =
(ScheduledThreadPoolExecutor)Executors.newScheduledThreadPool(1);
final ScheduledFuture<?> beepHandler =
scheduler.scheduleAtFixedRate(new BeepTask(), 2, 2, TimeUnit.SECONDS);
scheduler.schedule(new Runnable() {
@Override
public void run() {
beepHandler.cancel(true);
scheduler.shutdown();
}
}, 10, TimeUnit.SECONDS);
}
static class BeepTask implements Runnable {
public void run() {
System.out.println("beep");
}
}
}
これにより、次の結果が得られます。
出力
beep
beep
beep
beep