5
我正在向ExecutorService
提供線索。如何注意父線程的異常?
這些線程操作的一些數據,如果有衝突,數據對象拋出一個異常,這是由矛盾的線索,進而中止和不完整的執行捕獲。
當發生這種情況時,中止線程需要在隊列中被放回,並反饋到執行者。
如何判斷是否從父線程引發異常?
我正在向ExecutorService
提供線索。如何注意父線程的異常?
這些線程操作的一些數據,如果有衝突,數據對象拋出一個異常,這是由矛盾的線索,進而中止和不完整的執行捕獲。
當發生這種情況時,中止線程需要在隊列中被放回,並反饋到執行者。
如何判斷是否從父線程引發異常?
當你submit()
上一個任務ExecutorService
你得到一個未來的結果。執行完成後,您可以在未來致電get()
。如果適用,這將返回結果,或者如果原始任務投擲了一個,它將拋出一個ExecutionException
。如果你想要真正的異常對象,你可以做getCause()
。
另外請注意,你要放一個Task
返回到服務,該任務在Thread
還沒有真正終止跑(剛好趕上了異常,並正在等待一個新的)。
下面是一個例子使用(你可以使用Runnable
,如果你不喜歡的結果)。
Callable<String> myCallable = ...;
Future<String> future = myExector.submit(myCallable);
// Do something else until myCallable.isDone() returns true.
try {
String result = future.get();
}catch(ExecutionException e){
// Handle error, perhaps create new Callable to submit.
}
我對Java很新。你能用這些呼叫畫出一個準系統的例子嗎? – Aerovistae
添加了一個示例 – Thirler