当一个线程因为异常而死亡时,这个线程会发生什么?如果它在线程池中,会生成一个新的线程吗?我对scala ExecutionContext中发生的事情很感兴趣,但是由于ExecutionContext包装了java线程池,所以我认为Java用户也会知道答案。
例如,如果我创建一个包装FixedThreadPool(100)的ExecutionContext,如果一个线程死亡,线程池会替换这个线程吗?
当一个线程因为异常而死亡时,这个线程会发生什么?如果它在线程池中,会生成一个新的线程吗?我对scala ExecutionContext中发生的事情很感兴趣,但是由于ExecutionContext包装了java线程池,所以我认为Java用户也会知道答案。
例如,如果我创建一个包装FixedThreadPool(100)的ExecutionContext,如果一个线程死亡,线程池会替换这个线程吗?
Executors.newFixedThreadPool()
创建的线程池可以在需要时替换已死亡的线程。来自于Executors.newFixedThreadPool()
文档的说明如下:
"如果任何线程在关闭之前由于执行过程中发生故障而终止,则如果需要执行后续任务,将有一个新线程取代它。"