1
0

More than 1 year has passed since last update.

【JavaGold】newScheduledThreadPoolメソッド

Posted at

概要

指定された数のスレッドを持つスケジュール可能なスレッドプールを作成するための静的メソッド。

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()メソッドを呼び出してスレッドプールを終了する必要がある。

使用場面

  • 複数のスレッドでタスクを並列に実行したい場合。
  • 予定されたタスクの実行や定期的なタスクのスケジュールを行いたい場合。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0