我想从正在运行的线程中捕获异常并在调用线程中处理它。我怎么会这样最好的方式?
try {
Runnable connect = new Runnable() {
public synchronized void run() {
try {
... some code requiring long time
} catch(Exception e) {
..I want to catch here and send to calling thread
}
}
}
synchronized(connect) {
new Thread(connect).start();
connect.wait();
...if exception then handle it
...keep on with code if no exception occurred
}
} catch(Exception e) {
}
答案 0 :(得分:1)
最好的方法是不直接使用Thread,而是使用Future。如果需要,可以通过线程运行FutureTask,或者通过向执行者提交Callable(首选方法)来获取Future。未来为您提供了一种方便的方式来等待任务完成和处理结果(定期或特殊)。