0
私はいつも例外をスローするrunnableを持っています。たとえばNullPointerExceptionです。 このシナリオでは、ThreadPoolのサイズが100であるスレッドプールに100000の実行可能ファイルを送信しています。スレッドプールはどのように例外を処理しますか?Java ThreadPoolはスレッド例外処理のためにどのように設計されていますか?
私はいつも例外をスローするrunnableを持っています。たとえばNullPointerExceptionです。 このシナリオでは、ThreadPoolのサイズが100であるスレッドプールに100000の実行可能ファイルを送信しています。スレッドプールはどのように例外を処理しますか?Java ThreadPoolはスレッド例外処理のためにどのように設計されていますか?
ExecutorService
スレッドプールを使用している場合、例外はワーカースレッドに影響しません。例えば、callableを使用している場合は、futureTask
というラッパーが呼び出され、メソッドによってスローされた例外があれば処理します。 Java APIから
ソースコード
Callable<V> c = callable;
if (c != null && state == NEW) {
V result;
boolean ran;
try {
result = c.call();
ran = true;
} catch (Throwable ex) {
result = null;
ran = false;
setException(ex);
}
if (ran)
set(result);
}