Java で ExecutorService にタスクを送信しようとしています。例外をスローできる Callable を使用するか、Runnable を使用します。私の使用例はばかげています: 例外をスローするタスクをスケジュールしたいのですが、void メソッドです。その結果、メソッド定義がユース ケースと一致しないため、Callable または Runnable のいずれも使用できません。また、送信後に受け取る Future から例外を伝播させたいと考えています。何か案は?
2 に答える
3
使用できますCallable<Void>
。明らかに、Void オブジェクトをインスタンス化することはできませんが、単に return null
.
から、戻り値を破棄してFuture<Void>
を呼び出すことができます。例外を として再スローします。get
null
ExecutionException
于 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 に答える