从运行Thread获取异常

时间:2012-12-10 15:07:06

标签: java multithreading

我想从正在运行的线程中捕获异常并在调用线程中处理它。我怎么会这样最好的方式?

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) {
}

1 个答案:

答案 0 :(得分:1)

最好的方法是不直接使用Thread,而是使用Future。如果需要,可以通过线程运行FutureTask,或者通过向执行者提交Callable(首选方法)来获取Future。未来为您提供了一种方便的方式来等待任务完成和处理结果(定期或特殊)。