为什么在调用 execute 方法时在 worker 中重新抛出未处理的异常?因此,将在下一次执行时创建新线程以最大化线程数
最佳答案
Why java ThreadPoolExecutor kill thread when RuntimeException occurs?
我只能猜测ThreadPoolExecutor.execute(...)
线程调用runnable.run()
直接的原因而不是将其包装在 FutureTask
中,这样如果您不关心结果,就不会招致 FutureTask
的开销。
如果您的线程抛出一个RuntimeException
,希望这种情况很少发生,并且没有将异常返回给调用者的机制,那么为什么要为包装类付费?所以最坏的情况是,线程被杀死,将被线程池回收并重新启动。
关于java - 为什么 java ThreadPoolExecutor 在发生 RuntimeException 时杀死线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19123533/