概要
スレッドプール1を使用し、スレッドの作成や管理に関する詳細な実装を意識することなく、効率的なマルチスレッドの実行環境を構築することができる。
構成インタフェース
Executor
フレームワークは、以下のインタフェースで構成されている。
構成
Executor
インタフェース
↑(汎化)
ExecutorService
インタフェース
↑(汎化)
ScheduledExecutorService
インタフェース
Executorインタフェース
Executor
フレームワークの中心となるインタフェースである。
execute(Runnable command)
メソッドを持ち、指定されたタスクを非同期に実行する。
ExecutorServiceインタフェース
Executor
インタフェースを拡張したインタフェースであり、スレッドプールの管理やタスクのスケジューリング、タスクの終了待ちなど、より高度なタスク管理機能を提供する。
以下のメソッドを持ち、戻り値を返すタスクの実行や複数のタスクの同時実行などをサポートする。
主なメソッド
-
submit()
メソッド -
invokeAll()
メソッド など
ScheduledExecutorServiceインタフェース
ExecutorService
インタフェースを拡張しており、タスクのスケジューリングに特化したメソッドを追加し、タスクのスケジューリングや実行時刻の制御が容易になる。定期的なタスクの実行や遅延実行が必要な場合に特に便利である。
主なメソッド
-
schedule()
メソッド -
scheduleAtFixedRate()
メソッド -
awaitTermination()
メソッド など
ExecutorService
インタフェースはタスクの実行時間の制御はできないが、ScheduledExecutorService
インタフェースはタスクの実行時間や実行間隔を指定してタスクのスケジュールをすることができる。
これらの実装を取得するのがExecutersクラスである。
-
スレッドの無駄遣いをなくすために、あらかじめスレッドを生成して保存しておき、使い回しをする仕組みのこと。 ↩