JavaTM 2 Platform
Standard Ed. 6

java.util.concurrent
介面 CompletionService<V>

所有已知實作類別:
ExecutorCompletionService

public interface CompletionService<V>

將生產新的非同步任務與使用已完成任務的結果分離開來的服務。生產者 submit 執行的任務。使用者 take 已完成的任務,並按照完成這些任務的順序處理它們的結果。例如,CompletionService 可以用來管理非同步 IO ,執行讀操作的任務作為程序或系統的一部分提交,然後,當完成讀操作時,會在程序的不同部分執行其他操作,執行操作的順序可能與所請求的順序不同。

通常,CompletionService 依賴於一個單獨的 Executor 來實際執行任務,在這種情況下,CompletionService 只管理一個內部完成佇列。ExecutorCompletionService 類別提供了此方法的一個實作。

記憶體一致性效果:執行緒中向 CompletionService 提交任務之前的操作 happen-before 該任務執行的操作,後者依次 happen-before 緊跟在從對應 take() 成功返回的操作。


方法摘要
 Future<V> poll()
          獲取並移除表示下一個已完成任務的 Future,如果不存在這樣的任務,則返回 null
 Future<V> poll(long timeout, TimeUnit unit)
          獲取並移除表示下一個已完成任務的 Future,如果目前不存在這樣的任務,則將等待指定的時間(如果有必要)。
 Future<V> submit(Callable<V> task)
          提交要執行的值返回任務,並返回表示掛起的任務結果的 Future。
 Future<V> submit(Runnable task, V result)
          提交要執行的 Runnable 任務,並返回一個表示任務完成的 Future,可以提取或輪詢此任務。
 Future<V> take()
          獲取並移除表示下一個已完成任務的 Future,如果目前不存在這樣的任務,則等待。
 

方法詳細資訊

submit

Future<V> submit(Callable<V> task)
提交要執行的值返回任務,並返回表示掛起的任務結果的 Future。在完成時,可能會提取或輪詢此任務。

參數:
task - 要提交的任務
返回:
一個表示掛起的任務完成的 Future
拋出:
RejectedExecutionException - 如果不能安排要執行的任務
NullPointerException - 如果該任務為 null

submit

Future<V> submit(Runnable task,
                 V result)
提交要執行的 Runnable 任務,並返回一個表示任務完成的 Future,可以提取或輪詢此任務。

參數:
task - 要提交的任務
result - 要返回的已成功完成任務的結果
返回:
一個表示掛起的任務完成的 Future,其 get() 方法將返回完成時給出的結果值
拋出:
RejectedExecutionException - 如果不能安排要執行的任務
NullPointerException - 如果該任務為 null

take

Future<V> take()
               throws InterruptedException
獲取並移除表示下一個已完成任務的 Future,如果目前不存在這樣的任務,則等待。

返回:
表示下一個已完成任務的 Future
拋出:
InterruptedException - 如果在等待時被中斷

poll

Future<V> poll()
獲取並移除表示下一個已完成任務的 Future,如果不存在這樣的任務,則返回 null

返回:
表示下一個已完成任務的 Future;如果不存在這樣的任務,則返回 null

poll

Future<V> poll(long timeout,
               TimeUnit unit)
               throws InterruptedException
獲取並移除表示下一個已完成任務的 Future,如果目前不存在這樣的任務,則將等待指定的時間(如果有必要)。

參數:
timeout - 放棄之前需要等待的時間長度,以 unit 為時間單位
unit - 確定如何解釋 timeout 參數的 TimeUnit
返回:
表示下一個已完成任務的 Future;如果等待了指定時間仍然不存在這樣的任務,則返回 null
拋出:
InterruptedException - 如果在等待時被中斷

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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