当线程因异常而死亡时,该线程会发生什么?如果它在线程池中,它是否会产生一个新线程?我对scala ExecutionContext中发生的事情感兴趣,但由于ExecutionContext包装了一个java线程池,我认为Java用户也会知道答案。
例如,如果我创建一个包装FixedThreadPool(100)的ExecutionContext,如果一个线程死掉,那么线程池是否会替换该线程?
答案 0 :(得分:6)
线程本身在死后不能生成新线程,但是线程池可以替换它。例如,Executors.newFixedThreadPool()
创建的线程池在需要时替换死线程。来自Executors.newFixedThreadPool()
的文档:
"如果任何线程在执行之前由于执行失败而终止 关闭,如果需要执行,新的将取代它 后续任务。"