首頁 > Java > java教程 > 如何使用ExecutorService高效等待任務完成?

如何使用ExecutorService高效等待任務完成?

Mary-Kate Olsen
發布: 2024-12-14 04:41:09
原創
337 人瀏覽過

How to Efficiently Await Task Completion Using ExecutorService?

ExecutorService:等待任務完成

利用 ExecutorService 時,開發人員可能需要暫停執行,直到所有指派的任務完成。本次調查探討了實現這一目標的最簡單方法。

問題:

執行大量計算任務,每個核心一個,並暫停執行直至完成。目前實作利用 ExecutorService.execute() 和 es.wait(),但面對 IllegalMonitorStateException。

答案:

使用ExecutorService.invokeAll(),一個簡單的解決方案只需一行即可完成所需的功能code:

List<Callable<Object>> todo = new ArrayList<Callable<Object>>(singleTable.size());

for (DataTable singleTable: uniquePhrases) {
    todo.add(Executors.callable(new ComputeDTask(singleTable))); 
}

List<Future<Object>> answers = es.invokeAll(todo);
登入後複製

invokeAll() 暫停執行,直到所有任務完成,無需手動關閉和awaitTermination()。此方法與跨多個執行的可重複使用 ExecutorService 實例保持一致。

要進一步探討相關主題,請參考以下參考資料:

  • [SO: 等待執行緒完成](URL)
  • [SO:執行緒回傳值](URL)
  • [SO:invokeAll()與集合>](URL)
  • [SO: 同步注意事項] (URL)

以上是如何使用ExecutorService高效等待任務完成?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板