専用スレッドで実行するタスクを定期的に送信するアプリケーションがあります。これらのタスクFutureTask<V>
とスレッドは、ジョブがキューに入るときにジョブを実行し、空の場合はスリープ状態になる無限ループにすぎません。
計算の結果を待つ必要がある場合もあるので、FutureTask の get() メソッドを呼び出します。これは、何か問題が発生した場合にも例外をスローします。しかし、結果がどうであったとしても気にしない場合がありますが、タスクの実行中に何らかの障害があったかどうかを知る必要があります (ログ、printStackTrace() など)。
必要のない get() を待たずにこれを達成する方法はありますか?
前もって感謝します!
UPDATE : タスクの実行後にランナー スレッドで get() を呼び出すことは、他の誰も結果を待たない場合に例外をキャッチする唯一の方法のように思われました。
もう 1 つの解決策は、FutureTask クラスを拡張して、Java リフレクションを介して sync.exception プライベート フィールドを公開するメソッドを提供することです。