JavaTM Platform
Standard Ed. 6

java.util.concurrent
クラス Executors

java.lang.Object
  上位を拡張 java.util.concurrent.Executors

public class Executors
extends Object

このパッケージで定義された ExecutorExecutorServiceScheduledExecutorServiceThreadFactory、および Callable クラス用のファクトリおよびユーティリティーメソッドです。このクラスは、次の種類のメソッドをサポートします。

導入されたバージョン:
1.5

メソッドの概要
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)
          必要に応じ、新規スレッドを作成するスレッドプールを作成しますが、利用可能な場合には以前に構築されたスレッドを再利用します。
static ExecutorService newFixedThreadPool(int nThreads)
          共有アンバウンド形式のキューなしで動作する、固定数のスレッドを再利用するスレッドプールを作成します。
static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory)
          共有アンバウンド形式のキューなしで動作する、固定数のスレッドを再利用するスレッドプールを作成します。
static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
          指定された遅延時間後、または周期的にコマンドの実行をスケジュールできる、スレッドプールを作成します。
static ScheduledExecutorService newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory)
          指定された遅延時間後、または周期的にコマンドの実行をスケジュールできる、スレッドプールを作成します。
static ExecutorService newSingleThreadExecutor()
          アンバウンド形式のキューなしで動作する、単一のワーカースレッドを使用する executor を作成します。
static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory)
          アンバウンド形式のキューなしで動作する、単一のワーカースレッドを使用する executor を作成します。
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 に委譲するが、キャストを使用してアクセス可能なほかのメソッドは委譲しないオブジェクトを返します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

newFixedThreadPool

public static ExecutorService newFixedThreadPool(int nThreads)
共有アンバウンド形式のキューなしで動作する、固定数のスレッドを再利用するスレッドプールを作成します。任意のポイントで、最大 nThreads のスレッドがアクティブな処理タスクになります。すべてのスレッドがアクティブな場合に、追加のタスクが送信されると、それらのタスクはスレッドが使用可能になるまでキューで待機します。実行中に発生した障害のために、いずれかのスレッドがシャットダウン前に終了した場合は、必要に応じて新規スレッドが引き継いで後続のタスクを実行します。明示的なシャットダウンが行われるまでは、スレッドはプール内に存在します。

パラメータ:
nThreads - プール内のスレッド数
戻り値:
新しく作成されたスレッドプール
例外:
IllegalArgumentException - nThreads <= 0 の場合

newFixedThreadPool

public static ExecutorService newFixedThreadPool(int nThreads,
                                                 ThreadFactory threadFactory)
共有アンバウンド形式のキューなしで動作する、固定数のスレッドを再利用するスレッドプールを作成します。必要に応じ、指定された ThreadFactory を使用して新規スレッドを作成します。任意のポイントで、最大 nThreads のスレッドがアクティブな処理タスクになります。すべてのスレッドがアクティブな場合に、追加のタスクが送信されると、それらのタスクはスレッドが使用可能になるまでキューで待機します。実行中に発生した障害のために、いずれかのスレッドがシャットダウン前に終了した場合は、必要に応じて新規スレッドが引き継いで後続のタスクを実行します。明示的なシャットダウンが行われるまでは、スレッドはプール内に存在します。

パラメータ:
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) とは異なり、返される executor では再構成による追加スレッドの使用は不可能であることが保証されています。

パラメータ:
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 の場合

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 内の executor が使用するすべての新規スレッドを作成します。SecurityManager が存在する場合、System.getSecurityManager() のグループが使用され、存在しない場合はこの defaultThreadFactory メソッドを呼び出すスレッドグループが使用されます。各新規スレッドは、非デーモンスレッドとして作成されます。また、スレッドの優先順位は、Thread.NORM_PRIORITY またはスレッドグループの最高許容優先順位のいずれか小さい方に設定されます。新規スレッドは、pool-N-thread-MThread.getName() を介してアクセス可能な名前を持ちます。ここで、N はこのファクトリの通し番号、M はこのファクトリにより作成されたスレッドの通し番号です。

戻り値:
スレッドファクトリ

privilegedThreadFactory

public static ThreadFactory privilegedThreadFactory()
現在のスレッドと同じアクセス権を持つ新規スレッドを作成するために使用するスレッドファクトリを返します。このファクトリは、defaultThreadFactory() と同じ設定を持つスレッドを作成します。また、新規スレッドの AccessControlContext および contextClassLoader を、この privilegedThreadFactory メソッドを呼び出すスレッドと同じに設定します。新規 privilegedThreadFactory は、AccessController.doPrivileged(java.security.PrivilegedAction) アクション内で作成できます。その際、現在のスレッドのアクセス制御コンテキストを設定して、アクション内に選択したアクセス権設定を保持するスレッドを作成します。  

このようなスレッド内で実行中のタスクは、現在のスレッドと同じアクセス制御およびクラスローダーを保持しますが、同じ ThreadLocalInheritableThreadLocal 値を保持する必要はありません。ThreadPoolExecutor.beforeExecute(java.lang.Thread, java.lang.Runnable) を使用して ThreadPoolExecutor サブクラスでタスクを実行する前に、必要に応じ、スレッドローカルの特定の値を設定またはリセットできます。また、ワーカースレッドを初期化して、ほかの指定されたスレッドと同じ InheritableThreadLocal 設定にすることが必要な場合、カスタム ThreadFactory を作成し、内部で値を継承するほかのスレッドの作成の要求をスレッドが待機および処理するようにできます。

戻り値:
スレッドファクトリ
例外:
AccessControlException - 現在のアクセス制御コンテキストが、コンテキストクラスローダーの取得と設定の両方のアクセス権を保持しない場合

callable

public static <T> Callable<T> callable(Runnable task,
                                       T result)
呼び出し時に、指定されたタスクを実行し、指定された結果を返す、Callable オブジェクトを返します。これは、Callable を必要とするメソッドを、ほかの方法では結果の出ないアクションに適用する場合に役立ちます。

パラメータ:
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

public static <T> Callable<T> privilegedCallable(Callable<T> callable)
呼び出し時に、現在のアクセス制御コンテキストで指定された callable を実行する、Callable オブジェクトを返します。通常、このメソッドは、AccessController.doPrivileged(java.security.PrivilegedAction) アクション内で呼び出されて呼び出し可能レイアウトを作成します。呼び出し可能レイアウトは、可能な場合はそのアクション内に保持されている選択したアクセス権設定に従って実行し、可能でない場合は関連付けられた AccessControlException をスローします。

パラメータ:
callable - 基本となるタスク
戻り値:
呼び出し可能オブジェクト
例外:
NullPointerException - 呼び出し可能レイアウトが null の場合

privilegedCallableUsingCurrentClassLoader

public static <T> Callable<T> privilegedCallableUsingCurrentClassLoader(Callable<T> callable)
呼び出し時に、現在のアクセス制御コンテキストで、現在のコンテキストクラスローダーをコンテクストクラスローダーとする、指定された callable を実行する、Callable オブジェクトを返します。通常、このメソッドは、AccessController.doPrivileged(java.security.PrivilegedAction) アクション内で呼び出されて呼び出し可能レイアウトを作成します。呼び出し可能レイアウトは、可能な場合はそのアクション内に保持されている選択したアクセス権設定に従って実行し、可能でない場合は関連付けられた AccessControlException をスローします。

パラメータ:
callable - 基本となるタスク
戻り値:
呼び出し可能オブジェクト
例外:
NullPointerException - 呼び出し可能レイアウトが null の場合
AccessControlException - 現在のアクセス制御コンテキストが、コンテキストクラスローダーの取得と設定の両方のアクセス権を保持しない場合

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。