0

実行中のスレッドから例外をキャッチし、呼び出し元のスレッドで処理したいと思います。どのように私はそれを最善の方法で行うでしょうか?

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

1 に答える 1

1

最善の方法は、Threadを直接使用せず、代わりにFutureを使用することです。必要に応じて、スレッドを介してFutureTaskを実行するか、Callableをエグゼキューターに送信することでFutureを取得できます(推奨される方法)。Futureは、タスクが完了するのを待ち、結果(通常または例外)を処理するための便利な方法を提供します。

于 2012-12-10T15:11:23.723 に答える