ホームページ >Java >&#&チュートリアル >Callable を使用して ExecutorService タスクからの例外を処理する方法

Callable を使用して ExecutorService タスクからの例外を処理する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-11-14 09:24:01576ブラウズ

How to Handle Exceptions from ExecutorService Tasks Using Callable?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。