java - 为什么 java ThreadPoolExecutor 在发生 RuntimeException 时杀死线程?

标签 java concurrency

为什么在调用 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/

相关文章:

java - msbuild 中 java jar 的对应项是什么?

java - 使用 XPath 获取 XML 子元素

java - 避免 boolean 翻转的同步块(synchronized block)

multithreading - 并发软件中的读写实例

c++ - 序列点是否会阻止代码跨临界区边界重新排序?

java - 适合 Java 事件监听器的集合类

java - 为 facebook Graph Api 服务自动生成 java 类

java - 解决除子模块之外的依赖关系

c - 使用 pthread_cond_wait 的最佳情况

java - 如何在java中访问打印机队列