1

Java で ExecutorService にタスクを送信しようとしています。例外をスローできる Callable を使用するか、Runnable を使用します。私の使用例はばかげています: 例外をスローするタスクをスケジュールしたいのですが、void メソッドです。その結果、メソッド定義がユース ケースと一致しないため、Callable または Runnable のいずれも使用できません。また、送信後に受け取る Future から例外を伝播させたいと考えています。何か案は?

4

2 に答える 2

3

使用できますCallable<Void>。明らかに、Void オブジェクトをインスタンス化することはできませんが、単に return null.

から、戻り値を破棄してFuture<Void>を呼び出すことができます。例外を として再スローします。getnullExecutionException

于 2012-10-21T17:58:25.190 に答える
1

Callable<Void>(または実際には他のクラスパラメーター)を使用して常に返すことができますnull。この場合、タスクによってスローされた例外Future.getラップして再スローCallable<Throwable>するか、タスクの本体を使用して

try {
  // do stuff
} catch(Throwable t) {
  return t;
}
return null;

その場合、例外Future.get返されます。どちらの場合も、成功したタスクはnullその から返されますFuture.get

于 2012-10-21T18:13:44.573 に答える