java.lang.Object
java.util.concurrent.Executors
public class Executors extends Object
このパッケージで定義された
Executor、ExecutorService、ScheduledExecutorService、ThreadFactory、およびCallableクラス用のファクトリおよびユーティリティ・メソッドです。 このクラスは、次の種類のメソッドをサポートします。
- 一般に役立つ構成設定を使用して設定された
ExecutorServiceを作成して返すメソッド。 - 一般に役立つ構成設定を使用して設定された
ScheduledExecutorServiceを作成して返すメソッド。 - 実装固有のメソッドにアクセスできないようにすることで再構成を不可能にする、「ラップされた」ExecutorServiceを作成し、返すメソッド。
- 新しく作成されたスレッドを既知の状態に設定する
ThreadFactoryを作成して返すメソッド。 - Callable
を必要とする実行メソッドで使用できるように、クロージャに似たほかの形式からCallableを作成して返すメソッド。
- 導入されたバージョン:
- 1.5
-
メソッドのサマリー
修飾子と型メソッド説明呼出し時に、指定されたタスクを実行し、nullを返す、Callableオブジェクトを返します。static <T> Callable<T>呼出し時に、指定されたタスクを実行し、指定された結果を返す、Callableオブジェクトを返します。callable(PrivilegedAction<?> action) 呼出し時に、指定された特権付きアクションを実行し、その結果を返す、Callableオブジェクトを返します。callable(PrivilegedExceptionAction<?> action) 呼出し時に、指定された特権付き例外アクションを実行し、その結果を返す、Callableオブジェクトを返します。static ThreadFactory新規スレッドの作成に使用するデフォルトのスレッド・ファクトリを返します。static ExecutorService必要に応じ、新規スレッドを作成するスレッド・プールを作成しますが、利用可能な場合には以前に構築されたスレッドを再利用します。static ExecutorServicenewCachedThreadPool(ThreadFactory threadFactory) 必要に応じ、新規スレッドを作成するスレッド・プールを作成しますが、利用可能な場合には以前に構築されたスレッドを再利用します。また、必要に応じ、指定されたThreadFactoryを使用して新規スレッドを作成します。static ExecutorServicenewFixedThreadPool(int nThreads) 共有アンバウンド形式のキューなしで動作する、固定数のスレッドを再利用するスレッド・プールを作成します。static ExecutorServicenewFixedThreadPool(int nThreads, ThreadFactory threadFactory) 共有アンバウンド形式のキューなしで動作する、固定数のスレッドを再利用するスレッド・プールを作成します。必要に応じ、指定されたThreadFactoryを使用して新規スレッドを作成します。static ScheduledExecutorServicenewScheduledThreadPool(int corePoolSize) 指定された遅延時間後、または周期的にコマンドの実行をスケジュールできる、スレッド・プールを作成します。static ScheduledExecutorServicenewScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory) 指定された遅延時間後、または周期的にコマンドの実行をスケジュールできる、スレッド・プールを作成します。static ExecutorServiceアンバウンド形式のキューなしで動作する、単一のワーカー・スレッドを使用するexecutorを作成します。static ExecutorServicenewSingleThreadExecutor(ThreadFactory threadFactory) アンバウンド形式のキューなしで動作する、単一のワーカー・スレッドを使用するexecutorを作成します。必要に応じて、指定されたThreadFactoryを使用して新規スレッドを作成します。static ScheduledExecutorService指定された遅延時間後、または周期的にコマンドの実行をスケジュールできる、単一スレッドのexecutorを作成します。static ScheduledExecutorServicenewSingleThreadScheduledExecutor(ThreadFactory threadFactory) 指定された遅延時間後、または周期的にコマンドの実行をスケジュールできる、単一スレッドのexecutorを作成します。static ExecutorServiceターゲット並列処理レベルとして「利用可能なプロセッサ」の数を使用して、ワーク・スティール・スレッド・プールを作成します。static ExecutorServicenewWorkStealingPool(int parallelism) 指定された並列性レベルをサポートするのに十分な数のスレッドを保持するスレッド・プールを作成し、場合によっては競合を減らすために複数のキューを使用します。static <T> Callable<T>privilegedCallable(Callable<T> callable) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは、非推奨であり、今後のリリースで削除される可能性があります。「セキュリティ・マネージャ」と組み合わせて使用すると便利です。static <T> Callable<T>privilegedCallableUsingCurrentClassLoader(Callable<T> callable) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは、非推奨であり、今後のリリースで削除される可能性があります。「セキュリティ・マネージャ」と組み合わせて使用すると便利です。static ThreadFactory削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは、非推奨であり、今後のリリースで削除される可能性があります。「セキュリティ・マネージャ」と組み合わせて使用すると便利です。static ExecutorServiceunconfigurableExecutorService(ExecutorService executor) 定義済みのすべてのExecutorServiceメソッドを指定されたexecutorに委譲するが、キャストを使用してアクセス可能なほかのメソッドは委譲しないオブジェクトを返します。static ScheduledExecutorService定義済みのすべてのScheduledExecutorServiceメソッドを指定されたexecutorに委譲するが、キャストを使用してアクセス可能なほかのメソッドは委譲しないオブジェクトを返します。
-
メソッドの詳細
-
newFixedThreadPool
public static ExecutorService newFixedThreadPool(int nThreads) 共有アンバウンド形式のキューなしで動作する、固定数のスレッドを再利用するスレッド・プールを作成します。 任意のポイントで、最大nThreadsのスレッドがアクティブな処理タスクになります。 すべてのスレッドがアクティブな場合に、追加のタスクが送信されると、それらのタスクはスレッドが使用可能になるまでキューで待機します。 実行中に発生した障害のために、いずれかのスレッドがシャットダウン前に終了した場合は、必要に応じて新規スレッドが引き継いで後続のタスクを実行します。 明示的なshutdownが行われるまでは、スレッドはプール内に存在します。- パラメータ:
nThreads- プール内のスレッド数- 戻り値:
- 新しく作成されたスレッド・プール
- throws:
IllegalArgumentException-nThreads <= 0の場合
-
newWorkStealingPool
public static ExecutorService newWorkStealingPool(int parallelism) 指定された並列性レベルをサポートするのに十分な数のスレッドを保持するスレッド・プールを作成し、場合によっては競合を減らすために複数のキューを使用します。 並列性レベルは、タスクの処理にアクティブに関与した(または関与できる)スレッドの最大数に対応します。 実際のスレッド数は動的に増減します。 work-stealingプールは、送信されたタスクの実行順序に関して何も保証しません。- パラメータ:
parallelism- ターゲット並列性レベル- 戻り値:
- 新しく作成されたスレッド・プール
- throws:
IllegalArgumentException-parallelism <= 0の場合- 導入されたバージョン:
- 1.8
-
newWorkStealingPool
public static ExecutorService newWorkStealingPool()ターゲット並列処理レベルとして「利用可能なプロセッサ」の数を使用して、ワーク・スティール・スレッド・プールを作成します。- 戻り値:
- 新しく作成されたスレッド・プール
- 導入されたバージョン:
- 1.8
- 関連項目:
-
newFixedThreadPool
public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory) 共有アンバウンド形式のキューなしで動作する、固定数のスレッドを再利用するスレッド・プールを作成します。必要に応じ、指定されたThreadFactoryを使用して新規スレッドを作成します。 任意のポイントで、最大nThreadsのスレッドがアクティブな処理タスクになります。 すべてのスレッドがアクティブな場合に、追加のタスクが送信されると、それらのタスクはスレッドが使用可能になるまでキューで待機します。 実行中に発生した障害のために、いずれかのスレッドがシャットダウン前に終了した場合は、必要に応じて新規スレッドが引き継いで後続のタスクを実行します。 明示的なshutdownが行われるまでは、スレッドはプール内に存在します。- パラメータ:
nThreads- プール内のスレッド数threadFactory- 新規スレッドの作成時に使用するファクトリ- 戻り値:
- 新しく作成されたスレッド・プール
- throws:
NullPointerException- threadFactoryがnullの場合IllegalArgumentException-nThreads <= 0の場合
-
newSingleThreadExecutor
public static ExecutorService newSingleThreadExecutor()アンバウンド形式のキューなしで動作する、単一のワーカー・スレッドを使用するexecutorを作成します。 ただし、実行中に発生した障害のために、この単一のスレッドがシャットダウン前に終了した場合は、必要に応じて新規スレッドが引き継いで後続のタスクを実行します。 タスクが順番に実行されること、およびどの時点においても複数のタスクがアクティブになることはないことが保証されます。 ほかの点で等価なnewFixedThreadPool(1)とは異なり、返されるexecutorでは再構成による追加スレッドの使用は不可能であることが保証されています。- 戻り値:
- 新規作成された単一スレッドのexecutor
-
newSingleThreadExecutor
public static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory) アンバウンド形式のキューなしで動作する、単一のワーカー・スレッドを使用するexecutorを作成します。必要に応じて、指定されたThreadFactoryを使用して新規スレッドを作成します。 他の点では同等なnewFixedThreadPool(1, threadFactory)とは異なり、返されるエグゼキュータでは再構成による追加スレッドの使用は不可能であることが保証されています。- パラメータ:
threadFactory- 新規スレッドの作成時に使用するファクトリ- 戻り値:
- 新規作成された単一スレッドのexecutor
- throws:
NullPointerException- threadFactoryがnullの場合
-
newCachedThreadPool
public static ExecutorService newCachedThreadPool()必要に応じ、新規スレッドを作成するスレッド・プールを作成しますが、利用可能な場合には以前に構築されたスレッドを再利用します。 通常、これらのプールは、短期の非同期タスクを多数実行するプログラムのパフォーマンスを改善します。executeを呼び出すと、以前に構築されたスレッドが利用可能であれば、それを再利用します。 既存のスレッドが使用できない場合、新しい接続が作成され、プールに追加されます。 60秒間使用されなかったスレッドは、終了して、キャッシュから削除されます。 このため、長い間アイドル状態のプールによりリソースが消費されることはありません。 類似のプロパティを持つが、詳細の異なるプール(timeoutパラメータなど)は、ThreadPoolExecutorコンストラクタを使用して作成できます。- 戻り値:
- 新しく作成されたスレッド・プール
-
newCachedThreadPool
public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory) 必要に応じ、新規スレッドを作成するスレッド・プールを作成しますが、利用可能な場合には以前に構築されたスレッドを再利用します。また、必要に応じ、指定されたThreadFactoryを使用して新規スレッドを作成します。- パラメータ:
threadFactory- 新規スレッドの作成時に使用するファクトリ- 戻り値:
- 新しく作成されたスレッド・プール
- throws:
NullPointerException- threadFactoryがnullの場合
-
newSingleThreadScheduledExecutor
public static ScheduledExecutorService newSingleThreadScheduledExecutor()指定された遅延時間後、または周期的にコマンドの実行をスケジュールできる、単一スレッドのexecutorを作成します。 ただし、実行中に発生した障害のために、この単一のスレッドがシャットダウン前に終了した場合は、必要に応じて新規スレッドが引き継いで後続のタスクを実行します。 タスクが順番に実行されること、およびどの時点においても複数のタスクがアクティブになることはないことが保証されます。 ほかの点で等価なnewScheduledThreadPool(1)とは異なり、返されるexecutorでは再構成による追加スレッドの使用は不可能であることが保証されています。- 戻り値:
- 新規生成されたスケジュール済みのexecutor
-
newSingleThreadScheduledExecutor
public static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory) 指定された遅延時間後、または周期的にコマンドの実行をスケジュールできる、単一スレッドのexecutorを作成します。 ただし、実行中に発生した障害のために、この単一のスレッドがシャットダウン前に終了した場合は、必要に応じて新規スレッドが引き継いで後続のタスクを実行します。 タスクが順番に実行されること、およびどの時点においても複数のタスクがアクティブになることはないことが保証されます。 ほかの点で等価なnewScheduledThreadPool(1, threadFactory)とは異なり、返されるexecutorでは再構成による追加スレッドの使用は不可能であることが保証されています。- パラメータ:
threadFactory- 新規スレッドの作成時に使用するファクトリ- 戻り値:
- 新規生成されたスケジュール済みのexecutor
- throws:
NullPointerException- threadFactoryがnullの場合
-
newScheduledThreadPool
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) 指定された遅延時間後、または周期的にコマンドの実行をスケジュールできる、スレッド・プールを作成します。- パラメータ:
corePoolSize- アイドルであってもプール内に維持されるスレッドの数。- 戻り値:
- 新しく作成されたスケジュール済スレッド・プール
- throws:
IllegalArgumentException-corePoolSize < 0の場合
-
newScheduledThreadPool
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory) 指定された遅延時間後、または周期的にコマンドの実行をスケジュールできる、スレッド・プールを作成します。- パラメータ:
corePoolSize- アイドルであってもプール内に維持されるスレッドの数。threadFactory- executorが新しいスレッドを作成するときに使用するファクトリ- 戻り値:
- 新しく作成されたスケジュール済スレッド・プール
- throws:
IllegalArgumentException-corePoolSize < 0の場合NullPointerException- threadFactoryがnullの場合
-
unconfigurableExecutorService
public static ExecutorService unconfigurableExecutorService(ExecutorService executor) 定義済みのすべてのExecutorServiceメソッドを指定されたexecutorに委譲するが、キャストを使用してアクセス可能なほかのメソッドは委譲しないオブジェクトを返します。 これにより、構成を安全に「フリーズ」し、指定された具象実装のチューニングを許可しないようにできます。- パラメータ:
executor- 基になる実装- 戻り値:
ExecutorServiceインスタンス- throws:
NullPointerException- executorがnullの場合
-
unconfigurableScheduledExecutorService
public static ScheduledExecutorService unconfigurableScheduledExecutorService(ScheduledExecutorService executor) 定義済みのすべてのScheduledExecutorServiceメソッドを指定されたexecutorに委譲するが、キャストを使用してアクセス可能なほかのメソッドは委譲しないオブジェクトを返します。 これにより、構成を安全に「フリーズ」し、指定された具象実装のチューニングを許可しないようにできます。- パラメータ:
executor- 基になる実装- 戻り値:
ScheduledExecutorServiceインスタンス- throws:
NullPointerException- executorがnullの場合
-
defaultThreadFactory
public static ThreadFactory defaultThreadFactory()新規スレッドの作成に使用するデフォルトのスレッド・ファクトリを返します。 このファクトリは、同じThreadGroup内のエグゼキュータによって使用されるすべての新しいスレッドを作成します。SecurityManagerが存在する場合はSystem.getSecurityManager()のグループを使用し、それ以外の場合は、このdefaultThreadFactoryメソッドを呼び出すスレッドのグループを使用します。 各新規スレッドは、非デーモン・スレッドとして作成されます。また、スレッドの優先順位は、Thread.NORM_PRIORITYまたはスレッド・グループの最高許容優先順位のいずれか小さい方に設定されます。 新しいスレッドには、Thread.getName()を使用してアクセスできるpool-N-thread-Mという名前が付けられます。ここで、Nはこのファクトリのシーケンス番号であり、Mはこのファクトリによって作成されたスレッドのシーケンス番号です。- 戻り値:
- スレッド・ファクトリ
-
privilegedThreadFactory
@Deprecated(since="17", forRemoval=true) public static ThreadFactory privilegedThreadFactory()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは、非推奨であり、今後のリリースで削除される可能性があります。「セキュリティ・マネージャ」と組み合わせて使用すると便利です。 そのため、このメソッドは非推奨であり、削除される可能性があります。 Security Managerまたはこのメソッドに置換はありません。現在のスレッドと同じアクセス権を持つ新規スレッドを作成するために使用するスレッド・ファクトリを返します。 このファクトリは、defaultThreadFactory()と同じ設定を持つスレッドを作成します。さらに、新しいスレッドのAccessControlContextとcontextClassLoaderをこのprivilegedThreadFactoryメソッドを呼び出すスレッドと同じになるように設定します。 新しいprivilegedThreadFactoryは、AccessController.doPrivilegedアクション内で作成できます。その際、現在のスレッドのアクセス制御コンテキストを設定して、アクション内に選択したアクセス権設定を保持するスレッドを作成します。このようなスレッド内で実行中のタスクには現在のスレッドと同じアクセス制御およびクラス・ローダー設定が割り当てられますが、これらのタスクの
ThreadLocalまたはInheritableThreadLocal値が同じである必要はないことに注意してください。 必要な場合は、ThreadPoolExecutor.beforeExecute(Thread, Runnable)を使用してThreadPoolExecutorサブクラスでいずれかのタスクが実行される前に、スレッド・ローカルの特定の値を設定またはリセットできます。 また、ワーカー・スレッドを初期化して、ほかの指定されたスレッドと同じInheritableThreadLocal設定にすることが必要な場合、カスタムThreadFactoryを作成し、内部で値を継承するほかのスレッドの作成の要求をスレッドが待機および処理するようにできます。- 戻り値:
- スレッド・ファクトリ
- throws:
AccessControlException- 現在のアクセス制御コンテキストに、コンテキスト・クラス・ローダーの取得と設定の両方を行うためのアクセス権がない場合
-
callable
呼出し時に、指定されたタスクを実行し、指定された結果を返す、Callableオブジェクトを返します。 これは、Callableを必要とするメソッドを、ほかの方法では結果の出ないアクションに適用するときに役立つ場合があります。- 型パラメータ:
T- 結果の型- パラメータ:
task- 実行するタスクresult- 返す結果- 戻り値:
- 呼出し可能オブジェクト
- throws:
NullPointerException- タスクがnullの場合
-
callable
呼出し時に、指定されたタスクを実行し、nullを返す、Callableオブジェクトを返します。- パラメータ:
task- 実行するタスク- 戻り値:
- 呼出し可能オブジェクト
- throws:
NullPointerException- タスクがnullの場合
-
callable
public static Callable<Object> callable(PrivilegedAction<?> action) 呼出し時に、指定された特権付きアクションを実行し、その結果を返す、Callableオブジェクトを返します。- パラメータ:
action- 実行する特権付きアクション- 戻り値:
- 呼出し可能オブジェクト
- throws:
NullPointerException- アクションがnullの場合
-
callable
public static Callable<Object> callable(PrivilegedExceptionAction<?> action) 呼出し時に、指定された特権付き例外アクションを実行し、その結果を返す、Callableオブジェクトを返します。- パラメータ:
action- 実行する特権付き例外アクション- 戻り値:
- 呼出し可能オブジェクト
- throws:
NullPointerException- アクションがnullの場合
-
privilegedCallable
@Deprecated(since="17", forRemoval=true) public static <T> Callable<T> privilegedCallable(Callable<T> callable) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは、非推奨であり、今後のリリースで削除される可能性があります。「セキュリティ・マネージャ」と組み合わせて使用すると便利です。 そのため、このメソッドは非推奨であり、削除される可能性があります。 Security Managerまたはこのメソッドに置換はありません。呼出し時に、現在のアクセス制御コンテキストで指定されたcallableを実行する、Callableオブジェクトを返します。 通常、このメソッドは、AccessController.doPrivilegedアクション内で呼び出されて呼出し可能レイアウトを作成します。この呼出し可能レイアウトは、可能な場合はそのアクション内に保持されている選択したアクセス権設定に従って実行され、可能でない場合は関連付けられたAccessControlExceptionをスローします。- 型パラメータ:
T- 呼出し可能タスクの結果の型- パラメータ:
callable- 基本となるタスク- 戻り値:
- 呼出し可能オブジェクト
- throws:
NullPointerException- 呼出し可能レイアウトがnullの場合
-
privilegedCallableUsingCurrentClassLoader
@Deprecated(since="17", forRemoval=true) public static <T> Callable<T> privilegedCallableUsingCurrentClassLoader(Callable<T> callable) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは、非推奨であり、今後のリリースで削除される可能性があります。「セキュリティ・マネージャ」と組み合わせて使用すると便利です。 そのため、このメソッドは非推奨であり、削除される可能性があります。 Security Managerまたはこのメソッドに置換はありません。呼出し時に、現在のアクセス制御コンテキストで、現在のコンテキスト・クラス・ローダーをコンテキスト・クラス・ローダーとする、指定されたcallableを実行する、Callableオブジェクトを返します。 通常、このメソッドは、AccessController.doPrivilegedアクション内で呼び出されて呼出し可能レイアウトを作成します。この呼出し可能レイアウトは、可能な場合はそのアクション内に保持されている選択したアクセス権設定に従って実行され、可能でない場合は関連付けられたAccessControlExceptionをスローします。- 型パラメータ:
T- 呼出し可能タスクの結果の型- パラメータ:
callable- 基本となるタスク- 戻り値:
- 呼出し可能オブジェクト
- throws:
NullPointerException- 呼出し可能レイアウトがnullの場合AccessControlException- 現在のアクセス制御コンテキストに、コンテキスト・クラス・ローダーの設定と取得の両方を行うためのアクセス権がない場合
-