ホームページ >Java >&#&チュートリアル >Callable を使用して ExecutorService タスクからの例外を処理する方法
Callable を使用した Java ExecutorService タスクからの例外の処理
Java ExecutorService タスクからの例外を処理しようとする場合、ThreadPoolExecutor をサブクラス化し、オーバーライドするのが一般的です。その afterExecute メソッド。ただし、このアプローチは常に期待どおりに機能するとは限りません。
afterExecute をオーバーライドする代わりに、呼び出し可能タスクの利用を検討してください。 Callable.call() を使用すると、呼び出し元のスレッドに伝播できるチェック済み例外をスローできます。
Callable を使用した例を次に示します。
Callable task = ...; Future future = executor.submit(task); // Perform other tasks while the Callable executes try { future.get(); } catch (ExecutionException ex) { // Process the exception thrown by the Callable ex.getCause().printStackTrace(); }
Callable.call() がスローするとき、例外の場合、ExecutionException でラップされ、Future.get() によって再スローされます。これにより、ThreadPoolExecutor のサブクラス化と比較して、より堅牢な例外処理メカニズムが提供されます。
さらに、Callable を使用すると、例外が回復可能な場合にタスクを再送信できるため、エラー処理の柔軟性が向上します。
以上がCallable を使用して ExecutorService タスクからの例外を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。