public class Executors extends Object
Executor、ExecutorService、ScheduledExecutorService、ThreadFactory、およびCallableクラス用のファクトリおよびユーティリティ・メソッドです。 このクラスは、次の種類のメソッドをサポートします。
ExecutorServiceを作成して返すメソッド。
ScheduledExecutorServiceを作成して返すメソッド。
ThreadFactoryを作成して返すメソッド。
を必要とする実行メソッドで使用できるように、クロージャに似たほかの形式からCallableを作成して返すメソッド。
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
static Callable<Object> |
callable(PrivilegedAction<?> action) |
呼出し時に、指定された特権付きアクションを実行し、その結果を返す、
Callableオブジェクトを返します。 |
static Callable<Object> |
callable(PrivilegedExceptionAction<?> action) |
呼出し時に、指定された特権付き例外アクションを実行し、その結果を返す、
Callableオブジェクトを返します。 |
static Callable<Object> |
callable(Runnable task) |
呼出し時に、指定されたタスクを実行し、null
を返す、Callableオブジェクトを返します。 |
static <T> Callable<T> |
callable(Runnable task, T result) |
呼出し時に、指定されたタスクを実行し、指定された結果を返す、
Callableオブジェクトを返します。 |
static ThreadFactory |
defaultThreadFactory() |
新規スレッドの作成に使用するデフォルトのスレッド・ファクトリを返します。
|
static ExecutorService |
newCachedThreadPool() |
必要に応じ、新規スレッドを作成するスレッド・プールを作成しますが、利用可能な場合には以前に構築されたスレッドを再利用します。
|
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 |
newSingleThreadExecutor() |
アンバウンド形式のキューなしで動作する、単一のワーカー・スレッドを使用するexecutorを作成します。
|
static ExecutorService |
newSingleThreadExecutor(ThreadFactory threadFactory) |
アンバウンド形式のキューなしで動作する、単一のワーカー・スレッドを使用するexecutorを作成します。必要に応じて、指定されたThreadFactoryを使用して新規スレッドを作成します。
|
static ScheduledExecutorService |
newSingleThreadScheduledExecutor() |
指定された遅延時間後、または周期的にコマンドの実行をスケジュールできる、単一スレッドのexecutorを作成します。
|
static ScheduledExecutorService |
newSingleThreadScheduledExecutor(ThreadFactory threadFactory) |
指定された遅延時間後、または周期的にコマンドの実行をスケジュールできる、単一スレッドのexecutorを作成します。
|
static ExecutorService |
newWorkStealingPool() |
すべての
使用可能なプロセッサをターゲット並列性レベルとして使用して、work-stealingスレッド・プールを作成します。 |
static ExecutorService |
newWorkStealingPool(int parallelism) |
指定された並列性レベルをサポートするのに十分な数のスレッドを保持するスレッド・プールを作成し、場合によっては競合を減らすために複数のキューを使用します。
|
static <T> Callable<T> |
privilegedCallable(Callable<T> callable) |
呼出し時に、現在のアクセス制御コンテキストで指定されたcallable
を実行する、Callableオブジェクトを返します。 |
static <T> Callable<T> |
privilegedCallableUsingCurrentClassLoader(Callable<T> callable) |
呼出し時に、現在のアクセス制御コンテキストで、現在のコンテキスト・クラス・ローダーをコンテキスト・クラス・ローダーとする、指定されたcallable
を実行する、Callableオブジェクトを返します。 |
static ThreadFactory |
privilegedThreadFactory() |
現在のスレッドと同じアクセス権を持つ新規スレッドを作成するために使用するスレッド・ファクトリを返します。
|
static ExecutorService |
unconfigurableExecutorService(ExecutorService executor) |
定義済みのすべての
ExecutorServiceメソッドを指定されたexecutorに委譲するが、キャストを使用してアクセス可能なほかのメソッドは委譲しないオブジェクトを返します。 |
static ScheduledExecutorService |
unconfigurableScheduledExecutorService(ScheduledExecutorService executor) |
定義済みのすべての
ScheduledExecutorServiceメソッドを指定されたexecutorに委譲するが、キャストを使用してアクセス可能なほかのメソッドは委譲しないオブジェクトを返します。 |
public static ExecutorService newFixedThreadPool(int nThreads)
nThreadsのスレッドがアクティブな処理タスクになります。 すべてのスレッドがアクティブな場合に、追加のタスクが送信されると、それらのタスクはスレッドが使用可能になるまでキューで待機します。 実行中に発生した障害のために、いずれかのスレッドがシャットダウン前に終了した場合は、必要に応じて新規スレッドが引き継いで後続のタスクを実行します。 明示的なshutdownが行われるまでは、スレッドはプール内に存在します。 nThreads - プール内のスレッド数IllegalArgumentException - nThreads <= 0の場合public static ExecutorService newWorkStealingPool(int parallelism)
parallelism - ターゲット並列性レベルIllegalArgumentException - parallelism <= 0の場合public static ExecutorService newWorkStealingPool()
使用可能なプロセッサをターゲット並列性レベルとして使用して、work-stealingスレッド・プールを作成します。newWorkStealingPool(int)public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory)
nThreadsのスレッドがアクティブな処理タスクになります。 すべてのスレッドがアクティブな場合に、追加のタスクが送信されると、それらのタスクはスレッドが使用可能になるまでキューで待機します。 実行中に発生した障害のために、いずれかのスレッドがシャットダウン前に終了した場合は、必要に応じて新規スレッドが引き継いで後続のタスクを実行します。 明示的なshutdownが行われるまでは、スレッドはプール内に存在します。 nThreads - プール内のスレッド数threadFactory - 新規スレッドの作成時に使用するファクトリNullPointerException - threadFactoryがnullの場合IllegalArgumentException - nThreads <= 0の場合public static ExecutorService newSingleThreadExecutor()
newFixedThreadPool(1)とは異なり、返されるexecutorでは再構成による追加スレッドの使用は不可能であることが保証されています。 public static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory)
newFixedThreadPool(1, threadFactory)とは異なり、返されるエグゼキュータでは再構成による追加スレッドの使用は不可能であることが保証されています。 threadFactory - 新規スレッドの作成時に使用するファクトリNullPointerException - threadFactoryがnullの場合public static ExecutorService newCachedThreadPool()
executeを呼び出すと、以前に構築されたスレッドが利用可能であれば、それを再利用します。 既存のスレッドが使用できない場合、新しい接続が作成され、プールに追加されます。 60秒間使用されなかったスレッドは、終了して、キャッシュから削除されます。 このため、長い間アイドル状態のプールによりリソースが消費されることはありません。 類似のプロパティを持つが、詳細の異なるプール(timeoutパラメータなど)は、ThreadPoolExecutorコンストラクタを使用して作成できます。 public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory)
threadFactory - 新規スレッドの作成時に使用するファクトリNullPointerException - threadFactoryがnullの場合public static ScheduledExecutorService newSingleThreadScheduledExecutor()
newScheduledThreadPool(1)とは異なり、返されるexecutorでは再構成による追加スレッドの使用は不可能であることが保証されています。 public static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
newScheduledThreadPool(1, threadFactory)とは異なり、返されるexecutorでは再構成による追加スレッドの使用は不可能であることが保証されています。 threadFactory - 新規スレッドの作成時に使用するファクトリNullPointerException - threadFactoryがnullの場合public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
corePoolSize - アイドルであってもプール内に維持されるスレッドの数。IllegalArgumentException - corePoolSize < 0の場合public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory)
corePoolSize - アイドルであってもプール内に維持されるスレッドの数。threadFactory - executorが新しいスレッドを作成するときに使用するファクトリIllegalArgumentException - corePoolSize < 0の場合NullPointerException - threadFactoryがnullの場合public static ExecutorService unconfigurableExecutorService(ExecutorService executor)
ExecutorServiceメソッドを指定されたexecutorに委譲するが、キャストを使用してアクセス可能なほかのメソッドは委譲しないオブジェクトを返します。 これにより、構成を安全に「フリーズ」し、指定された具象実装のチューニングを許可しないようにできます。 executor - 基になる実装ExecutorServiceインスタンスNullPointerException - executorがnullの場合public static ScheduledExecutorService unconfigurableScheduledExecutorService(ScheduledExecutorService executor)
ScheduledExecutorServiceメソッドを指定されたexecutorに委譲するが、キャストを使用してアクセス可能なほかのメソッドは委譲しないオブジェクトを返します。 これにより、構成を安全に「フリーズ」し、指定された具象実装のチューニングを許可しないようにできます。 executor - 基になる実装ScheduledExecutorServiceインスタンスNullPointerException - executorがnullの場合public static ThreadFactory defaultThreadFactory()
ThreadGroup内のエグゼキュータによって使用されるすべての新しいスレッドを作成します。 SecurityManagerが存在する場合はSystem.getSecurityManager()のグループを使用し、それ以外の場合は、このdefaultThreadFactoryメソッドを呼び出すスレッドのグループを使用します。 各新規スレッドは、非デーモン・スレッドとして作成されます。また、スレッドの優先順位は、Thread.NORM_PRIORITYまたはスレッド・グループの最高許容優先順位のいずれか小さい方に設定されます。 新しいスレッドには、Thread.getName()を使用してアクセスできるpool-N-thread-Mという名前が付けられます。ここで、Nはこのファクトリのシーケンス番号であり、Mはこのファクトリによって作成されたスレッドのシーケンス番号です。 public static ThreadFactory privilegedThreadFactory()
defaultThreadFactory()と同じ設定を持つスレッドを作成します。さらに、新しいスレッドのAccessControlContextとcontextClassLoaderをこのprivilegedThreadFactoryメソッドを呼び出すスレッドと同じになるように設定します。 新しいprivilegedThreadFactoryは、AccessController.doPrivilegedアクション内で作成できます。その際、現在のスレッドのアクセス制御コンテキストを設定して、アクション内に選択したアクセス権設定を保持するスレッドを作成します。
このようなスレッド内で実行中のタスクには現在のスレッドと同じアクセス制御およびクラス・ローダー設定が割り当てられますが、これらのタスクのThreadLocalまたはInheritableThreadLocal値が同じである必要はないことに注意してください。 必要な場合は、ThreadPoolExecutor.beforeExecute(Thread, Runnable)を使用してThreadPoolExecutorサブクラスでいずれかのタスクが実行される前に、スレッド・ローカルの特定の値を設定またはリセットできます。 また、ワーカー・スレッドを初期化して、ほかの指定されたスレッドと同じInheritableThreadLocal設定にすることが必要な場合、カスタムThreadFactoryを作成し、内部で値を継承するほかのスレッドの作成の要求をスレッドが待機および処理するようにできます。
AccessControlException - 現在のアクセス制御コンテキストに、コンテキスト・クラス・ローダーの取得と設定の両方を行うためのアクセス権がない場合public static <T> Callable<T> callable(Runnable task, T result)
Callableオブジェクトを返します。 これは、Callableを必要とするメソッドを、ほかの方法では結果の出ないアクションに適用するときに役立つ場合があります。 T - 結果の型task - 実行するタスクresult - 返す結果NullPointerException - タスクがnullの場合public static Callable<Object> callable(Runnable task)
を返す、Callableオブジェクトを返します。task - 実行するタスクNullPointerException - タスクがnullの場合public static Callable<Object> callable(PrivilegedAction<?> action)
Callableオブジェクトを返します。action - 実行する特権付きアクションNullPointerException - アクションがnullの場合public static Callable<Object> callable(PrivilegedExceptionAction<?> action)
Callableオブジェクトを返します。action - 実行する特権付き例外アクションNullPointerException - アクションがnullの場合public static <T> Callable<T> privilegedCallable(Callable<T> callable)
を実行する、Callableオブジェクトを返します。 通常、このメソッドは、AccessController.doPrivilegedアクション内で呼び出されて呼出し可能レイアウトを作成します。この呼出し可能レイアウトは、可能な場合はそのアクション内に保持されている選択したアクセス権設定に従って実行され、可能でない場合は関連付けられたAccessControlExceptionをスローします。 T - 呼出し可能タスクの結果の型callable - 基本となるタスクNullPointerException - 呼出し可能レイアウトがnullの場合public static <T> Callable<T> privilegedCallableUsingCurrentClassLoader(Callable<T> callable)
を実行する、Callableオブジェクトを返します。 通常、このメソッドは、AccessController.doPrivilegedアクション内で呼び出されて呼出し可能レイアウトを作成します。この呼出し可能レイアウトは、可能な場合はそのアクション内に保持されている選択したアクセス権設定に従って実行され、可能でない場合は関連付けられたAccessControlExceptionをスローします。 T - 呼出し可能タスクの結果の型callable - 基本となるタスクNullPointerException - 呼出し可能レイアウトがnullの場合AccessControlException - 現在のアクセス制御コンテキストに、コンテキスト・クラス・ローダーの設定と取得の両方を行うためのアクセス権がない場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。