JavaTM 2 Platform
Standard Ed. 6

java.util.concurrent
類別 AbstractExecutorService

java.lang.Object
  繼承者 java.util.concurrent.AbstractExecutorService
所有已實作的介面:
Executor, ExecutorService
直接已知子類別:
ThreadPoolExecutor

public abstract class AbstractExecutorService
extends Object
implements ExecutorService

提供 ExecutorService 執行方法的預設實作。此類別使用 newTaskFor 返回的 RunnableFuture 實作 submitinvokeAnyinvokeAll 方法,預設情況下,RunnableFuture 是此套件中提供的 FutureTask 類別。例如,submit(Runnable) 的實作創建了一個關聯 RunnableFuture 類別,該類別將被執行並返回。子類別可以覆寫 newTaskFor 方法,以返回 FutureTask 之外的 RunnableFuture 實作。

擴展範例。以下是一個類別的簡要介紹,該類別定制 ThreadPoolExecutor 使用 CustomTask 類別替代預設 FutureTask

 public class CustomThreadPoolExecutor extends ThreadPoolExecutor {

   static class CustomTask<V> implements RunnableFuture<V> {...}

   protected <V> RunnableFuture<V> newTaskFor(Callable<V> c) {
       return new CustomTask<V>(c);
   }
   protected <V> RunnableFuture<V> newTaskFor(Runnable r, V v) {
       return new CustomTask<V>(r, v);
   }
   // ... add constructors, etc.
 }
 

從以下版本開始:
1.5

建構子摘要
AbstractExecutorService()
           
 
方法摘要
<T> List<Future<T>>
invokeAll(Collection<? extends Callable<T>> tasks)
          執行給定的任務,當所有任務完成時,返回保持任務狀態和結果的 Future 列表。
<T> List<Future<T>>
invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
          執行給定的任務,當所有任務完成或逾時期滿時(無論哪個首先發生),返回保持任務狀態和結果的 Future 列表。
<T> T
invokeAny(Collection<? extends Callable<T>> tasks)
          執行給定的任務,如果某個任務已成功完成(也就是未拋出異常),則返回其結果。
<T> T
invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
          執行給定的任務,如果在給定的逾時期滿前某個任務已成功完成(也就是未拋出異常),則返回其結果。
protected
<T> RunnableFuture<T>
newTaskFor(Callable<T> callable)
          為給定可調用任務返回一個 RunnableFuture
protected
<T> RunnableFuture<T>
newTaskFor(Runnable runnable, T value)
          為給定可運行任務和預設值返回一個 RunnableFuture
<T> Future<T>
submit(Callable<T> task)
          提交一個返回值的任務用於執行,返回一個表示任務的未決結果的 Future。
 Future<?> submit(Runnable task)
          提交一個 Runnable 任務用於執行,並返回一個表示該任務的 Future。
<T> Future<T>
submit(Runnable task, T result)
          提交一個 Runnable 任務用於執行,並返回一個表示該任務的 Future。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
從介面 java.util.concurrent.ExecutorService 繼承的方法
awaitTermination, isShutdown, isTerminated, shutdown, shutdownNow
 
從介面 java.util.concurrent.Executor 繼承的方法
execute
 

建構子詳細資訊

AbstractExecutorService

public AbstractExecutorService()
方法詳細資訊

newTaskFor

protected <T> RunnableFuture<T> newTaskFor(Runnable runnable,
                                           T value)
為給定可運行任務和預設值返回一個 RunnableFuture

參數:
runnable - 將被包裹的可運行任務
value - 用於所返回的將來任務的預設值
返回:
一個 RunnableFuture,在運行的時候,它將運行底層可運行任務,作為 Future 任務,它將產生給定值作為其結果,並為底層任務提供取消操作。
從以下版本開始:
1.6

newTaskFor

protected <T> RunnableFuture<T> newTaskFor(Callable<T> callable)
為給定可調用任務返回一個 RunnableFuture

參數:
callable - 將包裹的可調用任務
返回:
一個 RunnableFuture,在運行的時候,它將調用底層可調用任務,作為 Future 任務,它將產生可調用的結果作為其結果,並為底層任務提供取消操作。
從以下版本開始:
1.6

submit

public Future<?> submit(Runnable task)
從介面 ExecutorService 複製的描述
提交一個 Runnable 任務用於執行,並返回一個表示該任務的 Future。該 Future 的 get 方法在成功 完成時將會返回 null

指定者:
介面 ExecutorService 中的 submit
參數:
task - 要提交的任務
返回:
表示任務等待完成的 Future

submit

public <T> Future<T> submit(Runnable task,
                            T result)
從介面 ExecutorService 複製的描述
提交一個 Runnable 任務用於執行,並返回一個表示該任務的 Future。該 Future 的 get 方法在成功完成時將會返回給定的結果。

指定者:
介面 ExecutorService 中的 submit
參數:
task - 要提交的任務
result - 返回的結果
返回:
表示任務等待完成的 Future

submit

public <T> Future<T> submit(Callable<T> task)
從介面 ExecutorService 複製的描述
提交一個返回值的任務用於執行,返回一個表示任務的未決結果的 Future。該 Future 的 get 方法在成功完成時將會返回該任務的結果。

如果想立即阻塞任務的等待,則可以使用 result = exec.submit(aCallable).get(); 形式的建構。

註:Executors 類別包括了一組方法,可以轉換某些其他常見的類似於閉套件的物件,例如,將 PrivilegedAction 轉換為 Callable 形式,這樣就可以提交它們了。

指定者:
介面 ExecutorService 中的 submit
參數:
task - 要提交的任務
返回:
表示任務等待完成的 Future

invokeAny

public <T> T invokeAny(Collection<? extends Callable<T>> tasks)
            throws InterruptedException,
                   ExecutionException
從介面 ExecutorService 複製的描述
執行給定的任務,如果某個任務已成功完成(也就是未拋出異常),則返回其結果。一旦正常或異常返回後,則取消尚未完成的任務。如果此操作正在進行時修改了給定的 collection,則此方法的結果是不確定的。

指定者:
介面 ExecutorService 中的 invokeAny
參數:
tasks - 任務 collection
返回:
某個任務返回的結果
拋出:
InterruptedException - 如果等待時發生中斷
ExecutionException - 如果沒有任務成功完成

invokeAny

public <T> T invokeAny(Collection<? extends Callable<T>> tasks,
                       long timeout,
                       TimeUnit unit)
            throws InterruptedException,
                   ExecutionException,
                   TimeoutException
從介面 ExecutorService 複製的描述
執行給定的任務,如果在給定的逾時期滿前某個任務已成功完成(也就是未拋出異常),則返回其結果。一旦正常或異常返回後,則取消尚未完成的任務。如果此操作正在進行時修改了給定的 collection,則此方法的結果是不確定的。

指定者:
介面 ExecutorService 中的 invokeAny
參數:
tasks - 任務 collection
timeout - 最長等待時間
unit - timeout 參數的時間單位
返回:
某個任務返回的結果
拋出:
InterruptedException - 如果等待時發生中斷
ExecutionException - 如果沒有任務成功完成
TimeoutException - 如果在所有任務成功完成之前給定的逾時期滿

invokeAll

public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
                          throws InterruptedException
從介面 ExecutorService 複製的描述
執行給定的任務,當所有任務完成時,返回保持任務狀態和結果的 Future 列表。返回列表的所有元素的 Future.isDone()true。注意,可以正常地或通過拋出異常來終止已完成 任務。如果正在進行此操作時修改了給定的 collection,則此方法的結果是不確定的。

指定者:
介面 ExecutorService 中的 invokeAll
參數:
tasks - 任務 collection
返回:
表示任務的 Future 列表,列表順序與給定任務列表的迭代器所產生的順序相同,每個任務都已完成。
拋出:
InterruptedException - 如果等待時發生中斷,在這種情況下取消尚未完成的任務。

invokeAll

public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks,
                                     long timeout,
                                     TimeUnit unit)
                          throws InterruptedException
從介面 ExecutorService 複製的描述
執行給定的任務,當所有任務完成或逾時期滿時(無論哪個首先發生),返回保持任務狀態和結果的 Future 列表。返回列表的所有元素的 Future.isDone()true。一旦返回後,即取消尚未完成的任務。注意,可以正常地或通過拋出異常來終止已完成 任務。如果此操作正在進行時修改了給定的 collection,則此方法的結果是不確定的。

指定者:
介面 ExecutorService 中的 invokeAll
參數:
tasks - 任務 collection
timeout - 最長等待時間
unit - timeout 參數的時間單位
返回:
表示任務的 Future 列表,列表順序與給定任務列表的迭代器所產生的順序相同。如果操作未逾時,則已完成所有任務。如果確實逾時了,則某些任務尚未完成。
拋出:
InterruptedException - 如果等待時發生中斷,在這種情況下取消尚未完成的任務

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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