J'ai un runnable qui jette toujours une exception, disons NullPointerException. Je soumets 100000 de ces runnable au pool de threads avec la taille ThreadPool de 100. Que se passera-t-il dans ce scénario. Comment le pool de threads gère-t-il les exceptions?Comment java ThreadPool est conçu pour gérer le scénario d'exception de thread?
0
A
Répondre
0
Si vous utilisez le pool de threads ExecutorService
fourni, aucune exception n'affectera le thread de travail. Par exemple, si vous utilisez callable, il appellera wrapper appelé futureTask
qui gérera si une exception est levée par votre méthode.
code source de 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);
}