2010-01-30 23 views
0

我想使用ExecutorCompletionService上的構造函數,它帶有預定義的BlockingQueue如何使用ExecutorCompletionService

任何人都可以提供一個代碼片段來展示這是如何完成的。似乎只有BlockingQueueFuture s。這與提交必須用Callable s完成的事實相符。

我到這兒有點糊塗了 - 請幫助...

回答

1

提供給submit()Callables將在內部封裝爲FutureTask s,並且它是那些(或一個封裝)最終將插入到提供的隊列中。雖然這只是一個實現細節。 (並且,請注意,將結果插入隊列的這種用例是FutureTask中存在受保護的done()方法的主要原因。)合同說明了結果產生函數進入並最終結果出來。從隊列中提取的Future表示您之前提交的函數的最終結果。

1

javadoc for ExecutorCompletionService中有一個大的代碼示例,並記錄在案的構造需要BlockingQueue

+0

是的我看過,它不能幫助我,因爲大塊代碼不使用我需要的構造函數 - 你有沒有嘗試過自己? – Dan

+0

正如我所說,javadoc還顯示了一個構造函數,它需要一個'BlockingQueue' – skaffman