JavaTM 2 Platform
Standard Ed. 5.0

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 - プール内のスレッド数
戻り値:
新規作成されたスレッドプール

newFixedThreadPool

public static ExecutorService newFixedThreadPool(int nThreads,
                                                 ThreadFactory threadFactory)
共有アンバウンド形式のキューなしで動作する、固定セットのスレッドを再利用するスレッドプールを作成します。必要に応じ、指定された ThreadFactory を使用して新規スレッドを作成します。

パラメータ:
nThreads - プール内のスレッド数
threadFactory - 新規スレッド作成時に使用するファクトリ
戻り値:
新規作成されたスレッドプール

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

newCachedThreadPool

public static ExecutorService newCachedThreadPool()
必要に応じ、新規スレッドを作成するスレッドプールを作成しますが、利用可能な場合には以前に構築されたスレッドを再利用します。通常、プールは、短期の非同期タスクを多数実行するプログラムのパフォーマンスを改善します。execute を呼び出すと、以前に構築されたスレッドが利用可能であれば、それを再利用します。既存のスレッドを利用できない場合は、新規スレッドが作成されて、プールに追加されます。60 秒間使用されなかったスレッドは終了して、キャッシュから削除されます。このため、長い間アイドル状態のプールによりリソースが消費されることはありません。類似のプロパティを持つが、詳細の異なるプール (timeout パラメータなど) は、ThreadPoolExecutor コンストラクタを使用して作成できます。

戻り値:
新規作成されたスレッドプール

newCachedThreadPool

public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory)
必要に応じ、新規スレッドを作成するスレッドプールを作成しますが、利用可能な場合には以前に構築されたスレッドを再利用します。また、必要に応じ、指定された ThreadFactory を使用して新規スレッドを作成します。

パラメータ:
threadFactory - 新規スレッド作成時に使用するファクトリ
戻り値:
新規作成されたスレッドプール

newSingleThreadScheduledExecutor

public static ScheduledExecutorService newSingleThreadScheduledExecutor()
指定された遅延時間後、または周期的にコマンドの実行をスケジュール可能な、単一スレッドの executor を作成します。(ただし、実行中に発生した障害のため、この単一スレッドがシャットダウン前に終了した場合には、必要に応じて新規スレッドが引き継いで後続のタスクを実行する)。タスクが順番に実行されること、およびどの時点においても複数のタスクがアクティブになることはないことが保証されます。他の点で等価な newScheduledThreadPool(1) とは異なり、返される executor では再構成によるスレッドの追加使用は不可能であることが保証されています。

戻り値:
新規作成されたスケジュール済みの executor

newSingleThreadScheduledExecutor

public static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
指定された遅延時間後、または周期的にコマンドの実行をスケジュール可能な、単一スレッドの executor を作成します。(ただし、実行中に発生した障害のため、この単一スレッドがシャットダウン前に終了した場合には、必要に応じて新規スレッドが引き継いで後続のタスクを実行する)。タスクが順番に実行されること、およびどの時点においても複数のタスクがアクティブになることはないことが保証されます。他の点で等価な newScheduledThreadPool(1, threadFactory) とは異なり、返される executor では再構成によるスレッドの追加使用は不可能であることが保証されています。

パラメータ:
threadFactory - 新規スレッド作成時に使用するファクトリ
戻り値:
新規作成されたスケジュール済みの executor

newScheduledThreadPool

public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
指定された遅延時間後、または周期的にコマンドの実行をスケジュール可能なスレッドプールを作成します。

パラメータ:
corePoolSize - プール内に保持するスレッドの数 (アイドル状態のスレッドも含む)
戻り値:
新規作成されたスケジュール済みのスレッドプール

newScheduledThreadPool

public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize,
                                                              ThreadFactory threadFactory)
指定された遅延時間後、または周期的にコマンドの実行をスケジュール可能なスレッドプールを作成します。

パラメータ:
corePoolSize - プール内に保持するスレッドの数 (アイドル状態のスレッドも含む)
threadFactory - executor が新規スレッドを作成する際に使用するファクトリ
戻り値:
新規作成されたスケジュール済みのスレッドプール

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) アクション内で呼び出されて callable を作成するようにします。callable は、可能であればそのアクション内の選択したアクセス権設定に従って実行し、可能でなければ関連付けられた AccessControlException をスローします。

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

privilegedCallableUsingCurrentClassLoader

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

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

JavaTM 2 Platform
Standard Ed. 5.0

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

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