クラスExecutors

java.lang.Object
java.util.concurrent.Executors

public class Executors extends Object
このパッケージで定義されたExecutorExecutorServiceScheduledExecutorServiceThreadFactory、およびCallableクラス用のファクトリおよびユーティリティ・メソッドです。 このクラスは、次の種類のメソッドをサポートします。
導入されたバージョン:
1.5
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    呼出し時に、指定されたタスクを実行し、nullを返す、Callableオブジェクトを返します。
    static <T> Callable<T>
    callable(Runnable task, T result)
    呼出し時に、指定されたタスクを実行し、指定された結果を返す、Callableオブジェクトを返します。
    呼出し時に、指定された特権付きアクションを実行し、その結果を返す、Callableオブジェクトを返します。
    呼出し時に、指定された特権付き例外アクションを実行し、その結果を返す、Callableオブジェクトを返します。
    新規スレッドの作成に使用するデフォルトのスレッド・ファクトリを返します。
    必要に応じ、新規スレッドを作成するスレッド・プールを作成しますが、利用可能な場合には以前に構築されたスレッドを再利用します。
    必要に応じ、新規スレッドを作成するスレッド・プールを作成しますが、利用可能な場合には以前に構築されたスレッドを再利用します。また、必要に応じ、指定されたThreadFactoryを使用して新規スレッドを作成します。
    newFixedThreadPool(int nThreads)
    共有アンバウンド形式のキューなしで動作する、固定数のスレッドを再利用するスレッド・プールを作成します。
    newFixedThreadPool(int nThreads, ThreadFactory threadFactory)
    共有アンバウンド形式のキューなしで動作する、固定数のスレッドを再利用するスレッド・プールを作成します。必要に応じ、指定されたThreadFactoryを使用して新規スレッドを作成します。
    newScheduledThreadPool(int corePoolSize)
    指定された遅延時間後、または周期的にコマンドの実行をスケジュールできる、スレッド・プールを作成します。
    newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory)
    指定された遅延時間後、または周期的にコマンドの実行をスケジュールできる、スレッド・プールを作成します。
    アンバウンド形式のキューなしで動作する、単一のワーカー・スレッドを使用するexecutorを作成します。
    アンバウンド形式のキューなしで動作する、単一のワーカー・スレッドを使用するexecutorを作成します。必要に応じて、指定されたThreadFactoryを使用して新規スレッドを作成します。
    指定された遅延時間後、または周期的にコマンドの実行をスケジュールできる、単一スレッドのexecutorを作成します。
    指定された遅延時間後、または周期的にコマンドの実行をスケジュールできる、単一スレッドのexecutorを作成します。
    タスクごとに新しいスレッドを開始するエグゼキュータを作成します。
    タスクごとに新しい仮想スレッドを開始するエグゼキュータを作成します。
    「利用可能なプロセッサ」の数をターゲット並列度レベルとして使用して、作業ス・ティー・リング・スレッド・プールを作成します。
    newWorkStealingPool(int parallelism)
    指定された並列性レベルをサポートするのに十分な数のスレッドを保持するスレッド・プールを作成し、場合によっては競合を減らすために複数のキューを使用します。
    static <T> Callable<T>
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    このメソッドは当初、Callableオブジェクトを返しました。このオブジェクトは、コール時に、現在のアクセス制御コンテキストで指定したcallableを実行したものです。
    static <T> Callable<T>
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    このメソッドは当初、Callableオブジェクトを返しました。このオブジェクトをコールすると、現在のアクセス制御コンテキストの下で、現在のコンテキスト・クラス・ローダーをコンテキスト・クラス・ローダーとして、指定されたcallableを実行しました。
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    このメソッドは元々、現在のスレッドと同じアクセス制御コンテキストを持つ新しいスレッドを作成したスレッド・ファクトリを返しました。
    定義済みのすべてのExecutorServiceメソッドを指定されたexecutorに委譲するが、キャストを使用してアクセス可能なほかのメソッドは委譲しないオブジェクトを返します。
    定義済みのすべてのScheduledExecutorServiceメソッドを指定されたexecutorに委譲するが、キャストを使用してアクセス可能なほかのメソッドは委譲しないオブジェクトを返します。

    クラスjava.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • メソッドの詳細

    • 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)
      タスクごとに新しいスレッドを開始するエグゼキュータを作成します。 エグゼキュータによって作成されたスレッドの数は無制限です。

      エグゼキュータに送信されたタスクの保留結果を表すFuturecancel(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-MThread.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

      public static <T> Callable<T> callable(Runnable task, T result)
      呼出し時に、指定されたタスクを実行し、指定された結果を返す、Callableオブジェクトを返します。 これは、Callableを必要とするメソッドを、ほかの方法では結果の出ないアクションに適用するときに役立つ場合があります。
      型パラメータ:
      T - 結果のタイプ
      パラメータ:
      task - 実行するタスク
      result - 返す結果
      戻り値:
      呼出し可能オブジェクト
      スロー:
      NullPointerException - タスクがnullの場合
    • callable

      public static Callable<Object> callable(Runnable task)
      呼出し時に、指定されたタスクを実行し、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の場合