是否在ExecutionContext和/或Java线程池中替换了死线程?

时间:2016-06-19 16:44:38

标签: java multithreading scala threadpool executioncontext

当线程因异常而死亡时,该线程会发生什么?如果它在线程池中,它是否会产生一个新线程?我对scala ExecutionContext中发生的事情感兴趣,但由于ExecutionContext包装了一个java线程池,我认为Java用户也会知道答案。

例如,如果我创建一个包装FixedThreadPool(100)的ExecutionContext,如果一个线程死掉,那么线程池是否会替换该线程?

1 个答案:

答案 0 :(得分:6)

线程本身在死后不能生成新线程,但是线程池可以替换它。例如,Executors.newFixedThreadPool()创建的线程池在需要时替换死线程。来自Executors.newFixedThreadPool()的文档:

  

"如果任何线程在执行之前由于执行失败而终止   关闭,如果需要执行,新的将取代它   后续任务。"