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