Javadocをよく読む(Executor編)

はじめに

間違った使い方してたとかたまにあるので、Javadocしっかり読んでみます。今回はExecutor周りを見てみます。

クラス間の関係

クラス図はこんな感じです。

java-util-concurrent-executor

Executors以外は、全クラスExecutorを継承しています。
JavadocによるとExecutorの説明は以下の通りです。

送信されたRunnableタスクを実行するオブジェクトです。…

なので上図のクラス群は、Runnableを実行する責務を中心に機能的な広がりを持つクラス群と考えられそうです。それでは、この観点の基に1つずつJavadocを読んでいきます。

Executor

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

タスクの実行方式の分離というのがポイントのインターフェースです。

ExecutorService

終了を管理するメソッド、および1つ以上の非同期タスクの進行状況を追跡するFutureを生成できるメソッドを提供するExecutorです。

終了を管理するFutureを生成できるいうのがポイントのインタフェースです。

AbstractExecutorService

ExecutorService実行メソッドのデフォルト実装を提供します。

デフォルト実装いうのがポイントの抽象クラスです。

ThreadPoolExecutor

プールされた複数のスレッドの1つを使用して送信された各タスクを実行するExecutorServiceです。

プールされたスレッドでタスクを実行というのがポイントのクラスです。ExecutorServiceの1つです。

ScheduledThreadPoolExecutor

指定された遅延時間後または定期的にコマンドを実行するようにスケジュールできるThreadPoolExecutorです。

定期的にコマンドを実行というのがポイントのクラスです。ExecutorServiceの1つです。

Executors

このパッケージで定義されたExecutor、ExecutorService、ScheduledExecutorService、ThreadFactory、およびCallableクラス用のファクトリおよびユーティリティ・メソッドです

ファクトリおよびユーティリティ・メソッドというのがポイントのクラスです。

少しじっくり読んでみると各クラス間の関連が見えてきて、APIの誤用を減らせると思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA