5

私は次の Callable を持っています:

public class Worker implements Callable<Boolean>{

   @Override
   public Boolean call(){
      boolean success=true;

      //do Something
     return success;
   }

}

今、私はそれを実行しています:

Worker worker - new Worker();
Future<Boolean> submit = executor.submit(worker);

コードのどこかで何らかの操作を実行するために、送信を一種の hashMap に保存しています。

worker.call()関数で例外が発生したかどうかを知るにはどうすればよいですか?

submit.isCancelled()何らかの例外が発生した場合は true を返し、すべてが正常に機能した場合は false を返しますか?

4

4 に答える 4

13

呼び出すFuture.get()と、例外が a でラップされてスローされますExecutionException

于 2011-12-07T15:33:54.193 に答える
7

ドキュメントに記載されているように、 は( でラップされていますが)Future<V>中に発生した例外を再スローしますが、この場合も false になります。.call()ExecutionExceptionisCancelled()

于 2011-12-07T15:34:33.147 に答える
5

Guava Librariesには、興味のあるメソッドをFutureCallback持つインターフェースがありますonFailure(Throwable t)

プロジェクトに Google Guava ライブラリを追加することは、スペースの無駄にはなりません :-)

于 2011-12-07T15:40:53.447 に答える
2

submit.get()はExecutionExceptionをスローします

于 2011-12-07T15:38:40.993 に答える