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