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 <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)
shutdown
が行われるまでは、スレッドはプール内に存在します。nThreads
- プール内のスレッド数IllegalArgumentException
- nThreads <= 0
の場合public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory)
shutdown
が行われるまでは、スレッドはプール内に存在します。nThreads
- プール内のスレッド数threadFactory
- 新規スレッドの作成時に使用するファクトリNullPointerException
- threadFactory が null の場合IllegalArgumentException
- nThreads <= 0
の場合public static ExecutorService newSingleThreadExecutor()
public static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory)
threadFactory
- 新規スレッドの作成時に使用するファクトリNullPointerException
- threadFactory が null の場合public static ExecutorService newCachedThreadPool()
ThreadPoolExecutor
コンストラクタを使用して作成できます。public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory)
threadFactory
- 新規スレッドの作成時に使用するファクトリNullPointerException
- threadFactory が null の場合public static ScheduledExecutorService newSingleThreadScheduledExecutor()
public static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
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
- 基になる実装NullPointerException
- executor が null の場合public static ScheduledExecutorService unconfigurableScheduledExecutorService(ScheduledExecutorService executor)
ScheduledExecutorService
メソッドを指定された executor に委譲するが、キャストを使用してアクセス可能なほかのメソッドは委譲しないオブジェクトを返します。これにより、構成を安全に「フリーズ」し、指定された具象実装のチューニングを許可しないようにできます。executor
- 基になる実装NullPointerException
- executor が null の場合public static ThreadFactory defaultThreadFactory()
ThreadGroup
内の executor によって使用されるすべての新しいスレッドを作成します。SecurityManager
が存在する場合は System.getSecurityManager()
のグループを使用し、それ以外の場合は、この defaultThreadFactory メソッドを呼び出すスレッドのグループを使用します。各新規スレッドは、非デーモンスレッドとして作成されます。また、スレッドの優先順位は、Thread.NORM_PRIORITY またはスレッドグループの最高許容優先順位のいずれか小さい方に設定されます。新しいスレッドには、pool-N-thread-M の Thread.getName()
でアクセス可能な名前が付けられます。ここで、N はこのファクトリのシーケンス番号であり、M はこのファクトリによって作成されたスレッドのシーケンス番号です。public static ThreadFactory privilegedThreadFactory()
defaultThreadFactory()
と同じ設定を持つスレッドを作成します。さらに、新しいスレッドの AccessControlContext と contextClassLoader をこの privilegedThreadFactory メソッドを呼び出すスレッドと同じになるように設定します。新しい privilegedThreadFactory は、AccessController.doPrivileged(java.security.PrivilegedAction<T>)
アクション内で作成できます。その際、現在のスレッドのアクセス制御コンテキストを設定して、アクション内に選択したアクセス権設定を保持するスレッドを作成します。
このようなスレッド内で実行中のタスクには現在のスレッドと同じアクセス制御およびクラスローダー設定が割り当てられますが、これらのタスクの ThreadLocal
または InheritableThreadLocal
値が同じである必要はないことに注意してください。必要な場合は、ThreadPoolExecutor.beforeExecute(java.lang.Thread, java.lang.Runnable)
を使用して ThreadPoolExecutor
サブクラスでいずれかのタスクが実行される前に、スレッドローカルの特定の値を設定またはリセットすることができます。また、ワーカースレッドを初期化して、ほかの指定されたスレッドと同じ InheritableThreadLocal 設定にすることが必要な場合、カスタム ThreadFactory を作成し、内部で値を継承するほかのスレッドの作成の要求をスレッドが待機および処理するようにできます。
AccessControlException
- 現在のアクセス制御コンテキストに、コンテキストクラスローダーの取得と設定の両方を行うためのアクセス権がない場合。public static <T> Callable<T> callable(Runnable task, T result)
Callable
オブジェクトを返します。これは、Callable を必要とするメソッドを、ほかの方法では結果の出ないアクションに適用するときに役立つ場合があります。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(java.security.PrivilegedAction<T>)
アクション内で呼び出されて呼び出し可能レイアウトを作成します。呼び出し可能レイアウトは、可能な場合はそのアクション内に保持されている選択したアクセス権設定に従って実行し、可能でない場合は関連付けられた AccessControlException
をスローします。callable
- 基本となるタスクNullPointerException
- 呼び出し可能レイアウトが null の場合public static <T> Callable<T> privilegedCallableUsingCurrentClassLoader(Callable<T> callable)
Callable
オブジェクトを返します。通常、このメソッドは、AccessController.doPrivileged(java.security.PrivilegedAction<T>)
アクション内で呼び出されて呼び出し可能レイアウトを作成します。呼び出し可能レイアウトは、可能な場合はそのアクション内に保持されている選択したアクセス権設定に従って実行し、可能でない場合は関連付けられた AccessControlException
をスローします。callable
- 基本となるタスクNullPointerException
- 呼び出し可能レイアウトが null の場合AccessControlException
- 現在のアクセス制御コンテキストに、コンテキストクラスローダーの設定と取得の両方を行うためのアクセス権がない場合。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.