我有一个runnable,总是抛出一些异常,比如说NullPointerException。 我向线程池提交了100000个这样的runnable,ThreadPool大小为100.在这种情况下会发生什么。线程池如何处理异常?
答案 0 :(得分:0)
如果您正在使用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);
}