Java : Executor - API使用例

Executor (Java SE 19 & JDK 19) の使用例まとめです。
API仕様のおともにどうぞ。


概要

送信されたRunnableタスクを実行するオブジェクトです。 このインタフェースは、タスク送信を各タスクの実行方式(スレッドの使用やスケジューリングの詳細などを含む)から分離する方法を提供します。

クラス構成

Executorは、Runnable を実行する単純なインタフェースです。

一般的には、サブインタフェースである ExecutorService を使ってスレッド処理をすることが多いと思います。
ExecutorService は Executors で生成できます。

try (final var executorService = Executors.newSingleThreadExecutor()) {
    final Runnable command = () -> {
        System.out.println("  command start");
        System.out.println("  thread id = " + Thread.currentThread().threadId());
    };

    System.out.println("-- execute start --");
    System.out.println("thread id = " + Thread.currentThread().threadId());
    executorService.execute(command);
    System.out.println("-- execute end --");
}

System.out.println("-- executor terminated --");

// 結果
// ↓
//-- execute start --
//thread id = 1
//-- execute end --
//  command start
//  thread id = 33
//-- executor terminated --

メソッド

void execute (Runnable command)

将来のどの時点かで、指定されたコマンドを実行します。

概要のコード例も合わせてご確認ください。

class DirectExecutor implements Executor {
    public void execute(Runnable command) {
        command.run();
    }
}

final var executor = new DirectExecutor();
executor.execute(() -> System.out.println("Run!"));

// 結果
// ↓
//Run!

関連記事

ページの先頭へ