JavaTM 2 Platform
Standard Ed. 6

java.util.concurrent
類別 Executors

java.lang.Object
  繼承者 java.util.concurrent.Executors

public class Executors
extends Object

此套件中所定義的 ExecutorExecutorServiceScheduledExecutorServiceThreadFactoryCallable 類別的處理器和實用方法。此類別支持以下各種方法:

從以下版本開始:
1.5

方法摘要
static Callable<Object> callable(PrivilegedAction<?> action)
          返回 Callable 物件,調用它時可運行給定特權的操作並返回其結果。
static Callable<Object> callable(PrivilegedExceptionAction<?> action)
          返回 Callable 物件,調用它時可運行給定特權的異常操作並返回其結果。
static Callable<Object> callable(Runnable task)
          返回 Callable 物件,調用它時可運行給定的任務並返回 null
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()
          創建一個使用單個 worker 執行緒的 Executor,以無界佇列方式來運行該執行緒。
static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory)
          創建一個使用單個 worker 執行緒的 Executor,以無界佇列方式來運行該執行緒,並在需要時使用提供的 ThreadFactory 創建新執行緒。
static ScheduledExecutorService newSingleThreadScheduledExecutor()
          創建一個單執行緒執行程序,它可安排在給定延遲後運行命令或者定期地執行。
static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
          創建一個單執行緒執行程序,它可安排在給定延遲後運行命令或者定期地執行。
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 方法委託給指定執行程序的物件,但是使用強制轉換可能無法存取其他方法。
static ScheduledExecutorService unconfigurableScheduledExecutorService(ScheduledExecutorService executor)
          返回一個將所有已定義的 ExecutorService 方法委託給指定執行程序的物件,但是使用強制轉換可能無法存取其他方法。
 
從類別 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()
創建一個使用單個 worker 執行緒的 Executor,以無界佇列方式來運行該執行緒。(注意,如果因為在關閉前的執行期間出現失敗而終止了此單個執行緒,那麼如果需要,一個新執行緒將代替它執行後續的任務)。可保證順序地執行各個任務,並且在任意給定的時間不會有多個執行緒是活動的。與其他等效的 newFixedThreadPool(1) 不同,可保證無需重新配置此方法所返回的執行程序即可使用其他的執行緒。

返回:
新創建的單執行緒 Executor

newSingleThreadExecutor

public static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory)
創建一個使用單個 worker 執行緒的 Executor,以無界佇列方式來運行該執行緒,並在需要時使用提供的 ThreadFactory 創建新執行緒。與其他等效的 newFixedThreadPool(1, threadFactory) 不同,可保證無需重新配置此方法所返回的執行程序即可使用其他的執行緒。

參數:
threadFactory - 創建新執行緒時使用的處理器
返回:
新創建的單執行緒 Executor
拋出:
NullPointerException - 如果 threadFactory 為 null

newCachedThreadPool

public static ExecutorService newCachedThreadPool()
創建一個可根據需要創建新執行緒的執行緒池,但是在以前建構的執行緒可用時將重用它們。對於執行很多短期非同步任務的程序而言,這些執行緒池通常可提高程序性能。調用 execute 將重用以前建構的執行緒(如果執行緒可用)。如果現有執行緒沒有可用的,則創建一個新執行緒並添加到池中。終止並從快取記憶體中移除那些已有 60 秒鐘未被使用的執行緒。因此,長時間保持空閒的執行緒池不會使用任何資源。注意,可以使用 ThreadPoolExecutor 建構子創建具有類似屬性但細節不同(例如逾時參數)的執行緒池。

返回:
新創建的執行緒池

newCachedThreadPool

public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory)
創建一個可根據需要創建新執行緒的執行緒池,但是在以前建構的執行緒可用時將重用它們,並在需要時使用提供的 ThreadFactory 創建新執行緒。

參數:
threadFactory - 創建新執行緒時使用的處理器
返回:
新創建的執行緒池
拋出:
NullPointerException - 如果 threadFactory 為 null

newSingleThreadScheduledExecutor

public static ScheduledExecutorService newSingleThreadScheduledExecutor()
創建一個單執行緒執行程序,它可安排在給定延遲後運行命令或者定期地執行。(注意,如果因為在關閉前的執行期間出現失敗而終止了此單個執行緒,那麼如果需要,一個新執行緒會代替它執行後續的任務)。可保證順序地執行各個任務,並且在任意給定的時間不會有多個執行緒是活動的。與其他等效的 newScheduledThreadPool(1) 不同,可保證無需重新配置此方法所返回的執行程序即可使用其他的執行緒。

返回:
新創建的安排執行程序

newSingleThreadScheduledExecutor

public static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
創建一個單執行緒執行程序,它可安排在給定延遲後運行命令或者定期地執行。(注意,如果因為在關閉前的執行期間出現失敗而終止了此單個執行緒,那麼如果需要,一個新執行緒會代替它執行後續的任務)。可保證順序地執行各個任務,並且在任意給定的時間不會有多個執行緒是活動的。與其他等效的 newScheduledThreadPool(1, threadFactory) 不同,可保證無需重新配置此方法所返回的執行程序即可使用其他的執行緒。

參數:
threadFactory - 創建新執行緒時使用的處理器
返回:
新創建的安排執行程序
拋出:
NullPointerException - 如果 threadFactory 為 null

newScheduledThreadPool

public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
創建一個執行緒池,它可安排在給定延遲後運行命令或者定期地執行。

參數:
corePoolSize - 池中所保存的執行緒數,即使執行緒是空閒的也包括在內。
返回:
新創建的安排執行緒池
拋出:
NullPointerException - 如果 threadFactory 為 null

newScheduledThreadPool

public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize,
                                                              ThreadFactory threadFactory)
創建一個執行緒池,它可安排在給定延遲後運行命令或者定期地執行。

參數:
corePoolSize - 池中所保存的執行緒數,即使執行緒是空閒的也包括在內
threadFactory - 執行程序創建新執行緒時使用的處理器
返回:
新創建的安排執行緒池
拋出:
IllegalArgumentException - 如果 corePoolSize < 0
NullPointerException - 如果 threadFactory 為 null

unconfigurableExecutorService

public static ExecutorService unconfigurableExecutorService(ExecutorService executor)
返回一個將所有已定義的 ExecutorService 方法委託給指定執行程序的物件,但是使用強制轉換可能無法存取其他方法。這提供了一種可安全地“凍結”配置並且不允許調整給定具體實作的方法。

參數:
executor - 底層實作
返回:
一個 ExecutorService 實例
拋出:
NullPointerException - 如果 executor 為 null

unconfigurableScheduledExecutorService

public static ScheduledExecutorService unconfigurableScheduledExecutorService(ScheduledExecutorService executor)
返回一個將所有已定義的 ExecutorService 方法委託給指定執行程序的物件,但是使用強制轉換可能無法存取其他方法。這提供了一種可安全地“凍結”配置並且不允許調整給定具體實作的方法。

參數:
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 方法的執行緒相同。可以在 AccessController.doPrivileged(java.security.PrivilegedAction) 操作中創建一個新 privilegedThreadFactory,設置當前執行緒的存取控制上下文,以便創建具有該操作中保持的所選權限的執行緒。

注意,雖然運行在此類別執行緒中的任務具有與當前執行緒相同的存取控制和類別載入器,但是它們無需具有相同的 ThreadLocalInheritableThreadLocal 值。如有必要,使用 ThreadPoolExecutor.beforeExecute(java.lang.Thread, java.lang.Runnable)ThreadPoolExecutor 子類別中運行任何任務前,可以設置或重置執行緒區域變數的特定值。另外,如果必須初始化 worker 執行緒,以具有與某些其他指定執行緒相同的 InheritableThreadLocal 設置,則可以在執行緒等待和服務創建請求的環境中創建自定義的 ThreadFactory,而不是繼承其值。

返回:
執行緒處理器
拋出:
AccessControlException - 如果當前存取控制上下文沒有獲取和設置上下文類別載入器的權限。

callable

public static <T> Callable<T> callable(Runnable task,
                                       T result)
返回 Callable 物件,調用它時可運行給定的任務並返回給定的結果。這在把需要 Callable 的方法應用到其他無結果的操作時很有用。

參數:
task - 要運行的任務
result - 返回的結果
返回:
一個 callable 物件
拋出:
NullPointerException - 如果 task 為 null

callable

public static Callable<Object> callable(Runnable task)
返回 Callable 物件,調用它時可運行給定的任務並返回 null

參數:
task - 要運行的任務
返回:
一個 callable 物件
拋出:
NullPointerException - 如果 task 為 null

callable

public static Callable<Object> callable(PrivilegedAction<?> action)
返回 Callable 物件,調用它時可運行給定特權的操作並返回其結果。

參數:
action - 要運行的特權操作
返回:
一個 callable 物件
拋出:
NullPointerException - 如果 action 為 null

callable

public static Callable<Object> callable(PrivilegedExceptionAction<?> action)
返回 Callable 物件,調用它時可運行給定特權的異常操作並返回其結果。

參數:
action - 要運行的特權異常操作
返回:
一個 callable 物件
拋出:
NullPointerException - 如果 action 為 null

privilegedCallable

public static <T> Callable<T> privilegedCallable(Callable<T> callable)
返回 Callable 物件,調用它時可在當前的存取控制上下文中執行給定的 callable 物件。通常應該在 AccessController.doPrivileged(java.security.PrivilegedAction) 操作中調用此方法,以便創建 callable 物件,並且如有可能,則在該操作中保持的所選權限設置下執行此物件;如果無法調用,則拋出相關的 AccessControlException

參數:
callable - 底層任務
返回:
一個 callable 物件
拋出:
NullPointerException - 如果 callable 為 null

privilegedCallableUsingCurrentClassLoader

public static <T> Callable<T> privilegedCallableUsingCurrentClassLoader(Callable<T> callable)
返回 Callable 物件,調用它時可在當前的存取控制上下文中,使用當前上下文類別載入器作為上下文類別載入器來執行給定的 callable 物件。通常應該在 AccessController.doPrivileged(java.security.PrivilegedAction) 操作中調用此方法,以創建 callable 物件,並且如有可能,則在該操作中保持的所選權限設置下執行此物件;如果無法調用,則拋出相關的 AccessControlException

參數:
callable - 底層任務
返回:
一個 callable 物件
拋出:
NullPointerException - 如果 callable 為 null
AccessControlException - 如果當前的存取控制上下文沒有設置和獲得上下文類別載入器的權限。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only