概要
指定された数のスレッドを持つスケジュール可能なスレッドプールを作成するための静的メソッド。
例
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledThreadPoolExample {
public static void main(String[] args) {
ScheduledExecutorService executorService = Executors.newScheduledThreadPool(3);
// タスクをスケジュール
executorService.schedule(() -> {
System.out.println("Task 1 executed after 2 seconds.");
}, 2, TimeUnit.SECONDS);
executorService.schedule(() -> {
System.out.println("Task 2 executed after 5 seconds.");
}, 5, TimeUnit.SECONDS);
executorService.schedule(() -> {
System.out.println("Task 3 executed after 8 seconds.");
}, 8, TimeUnit.SECONDS);
// ExecutorServiceを終了する
executorService.shutdown();
}
}
上記の例では、newScheduledThreadPool()
メソッドを使用してScheduledExecutorService
のインスタンスを作成している。
このスレッドプールは3つのスレッドを持ち、タスクのスケジュールを行う。
schedule()
メソッドを使用してタスクをスケジュールしている。
引数には以下を指定する。
- 第1引数:実行するタスク
- 第2引数:遅延時間
実行結果
Task 1 executed after 2 seconds.
Task 2 executed after 5 seconds.
Task 3 executed after 8 seconds.
この例では、newScheduledThreadPool()
メソッドを使用して指定された数のスレッドを持つスケジュール可能なスレッドプールを作成し、複数のタスクを遅延実行している。
newSingleThreadScheduledExecutor
メソッドと同様、必要に応じてshutdown()
メソッドを呼び出してスレッドプールを終了する必要がある。
使用場面
- 複数のスレッドでタスクを並列に実行したい場合。
- 予定されたタスクの実行や定期的なタスクのスケジュールを行いたい場合。