5

Java の Future クラスを使用してタスクを実行していますが、タスクが完了すると isDone メソッドは true を返します。完了は、正常終了、例外、またはキャンセルが原因である可能性があります。これらすべての場合において、このメソッドは true を返します。

例外が原因で終了したのか、正常に終了したのかを知る方法はありますか?

4

3 に答える 3

6

Future.get() メソッドを呼び出すと、次の 4 つの結果が考えられます。

  • 結果値を取得します
  • CancellationException を取得します - 計算がキャンセルされた場合 (たとえば、Future.cancel(true) が呼び出された場合)
  • ExecutionException を取得します - 計算が例外をスローした場合
  • InterruptedException が発生します - 待機中に現在のスレッドが中断された場合 (executor.shutdownNow() が呼び出された場合など)
于 2011-07-12T17:24:14.437 に答える
2

単純に値の取得を試みることができますget。メソッドは例外をスローするか、値を返します。

于 2011-07-12T16:58:50.943 に答える
0

コードで使用しましたが、タスクが本当に正常に完了したかどうかを確認できる唯一の方法は、get() を使用することです。

于 2011-07-12T17:41:33.313 に答える