我對我的代碼有疑問。在java中獲得線程例外
我有兩個線程從主要方法運行&我想捕捉在主要方法中的任何兩個線程中可能發生的異常。
Future<Object> incoming=Executors.newSingleThreadExecutor().submit(new Task1(param1));
Future<Object> outgoing=Executors.newSingleThreadExecutor().submit(new Task2(param2));
問題是,如果我使用Future對象&調用get()方法爲例外,它會阻止我的代碼&我不知道,如果說線程2已完成線程之前/拋出異常1.
我如何處理這個優雅而不是這個?
while(!(incoming.isDone() || outgoing.isDone())){}
對於初學者來說,不會產生這樣的遺囑執行人的服務。這是一個重量級的對象,你創建一次,存儲在一個安全的地方,並在完成後關閉。你的代碼是一個明確的線程泄漏。 – 2012-07-25 13:31:29
在'run'方法中捕獲異常並將其記錄下來。 – 2012-07-25 13:31:38