- 
- 既知のすべてのサブインタフェース:
- ExecutorService,- ScheduledExecutorService
 - 既知のすべての実装クラス:
- AbstractExecutorService,- ForkJoinPool,- ScheduledThreadPoolExecutor,- ThreadPoolExecutor
 
 public interface Executor送信されたRunnableタスクを実行するオブジェクトです。 このインタフェースは、タスク送信を各タスクの実行方式(スレッドの使用やスケジューリングの詳細などを含む)から分離する方法を提供します。通常、Executorは、明示的にスレッドを作成するかわりに使用されます。 たとえば、タスクのセットごとにnew Thread(new RunnableTask()).start()を呼び出すのではなく、次のようにします:
 ただし、Executor executor = anExecutor(); executor.execute(new RunnableTask1()); executor.execute(new RunnableTask2()); ...Executorインタフェースでは、実行が非同期であることが厳密に求められるわけではありません。 もっとも単純なケースでは、executorは、送信されたタスクを呼出し側のスレッド内でただちに実行できます。
 より一般的には、タスクは呼出し側のスレッド以外のスレッドで実行されます。 次に示すexecutorは、各タスク用の新規スレッドを生成します。class DirectExecutor implements Executor { public void execute(Runnable r) { r.run(); } }
 多数のclass ThreadPerTaskExecutor implements Executor { public void execute(Runnable r) { new Thread(r).start(); } }Executor実装は、タスクをスケジュールする方法および時期に関して何らかの制限を課します。 次に、executorがタスクの送信を直列化して2番目のexecutorに渡す、複合executorを示します。
 このパッケージで提供されるclass SerialExecutor implements Executor { final Queue<Runnable> tasks = new ArrayDeque<>(); final Executor executor; Runnable active; SerialExecutor(Executor executor) { this.executor = executor; } public synchronized void execute(Runnable r) { tasks.add(() -> { try { r.run(); } finally { scheduleNext(); } }); if (active == null) { scheduleNext(); } } protected synchronized void scheduleNext() { if ((active = tasks.poll()) != null) { executor.execute(active); } } }Executor実装は、より拡張性の高いインタフェースであるExecutorServiceを実装します。ThreadPoolExecutorクラスは、拡張可能なスレッド・プール実装を提供します。Executorsクラスは、これらのExecutorのための便利なファクトリ・メソッドを提供します。メモリー整合性効果: RunnableオブジェクトをExecutorに送信する前のスレッド内のアクションは、別のスレッドで行われる可能性のある実行の開始よりも前に発生します。- 導入されたバージョン:
- 1.5
 
- 
- 
メソッドのサマリーすべてのメソッド インスタンス・メソッド 抽象メソッド 修飾子と型 メソッド 説明 voidexecute(Runnable command)将来のどの時点かで、指定されたコマンドを実行します。
 
- 
- 
- 
メソッドの詳細- 
executevoid execute(Runnable command) 将来のどの時点かで、指定されたコマンドを実行します。 コマンドは、新規スレッド内でも、プールされたスレッド内でも、呼出し側のスレッド内でも、Executor実装により随意に実行できます。- パラメータ:
- command- 実行可能なタスク
- 例外:
- RejectedExecutionException- このタスクの実行を受け入れることができない場合
- NullPointerException- コマンドがnullの場合
 
 
- 
 
-