使用Callable 處理來自Java ExecutorService 任務的異常
在嘗試處理來自Java ExecutorService 任務的異常化時,通常會子類化並重寫它的afterExecute 方法。然而,這種方法可能並不總是按預期工作。
不要覆寫 afterExecute,而是考慮使用 Callable 任務。 Callable.call() 允許拋出已檢查的異常,這些異常可以傳播回呼叫執行緒。
這是使用 Callable 的範例:
Callable task = ...; Future future = executor.submit(task); // Perform other tasks while the Callable executes try { future.get(); } catch (ExecutionException ex) { // Process the exception thrown by the Callable ex.getCause().printStackTrace(); }
當 Callable.call() 拋出一個異常,它被包裝在 ExecutionException 中並由 Future.get() 重新拋出。與子類化 ThreadPoolExecutor 相比,這提供了更強大的異常處理機制。
此外,使用 Callable 讓您能夠在異常可恢復的情況下重新提交任務,從而在錯誤處理方面提供更大的靈活性。
以上是如何使用 Callable 處理 ExecutorService 任務的異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!