死线程是否在 ExecutionContext and/or Java 线程池中被替换?
Are dead threads replaced in an ExecutionContext and/or Java thread pool?
当一个线程因为异常而死亡时,这个线程会发生什么?如果它在线程池中,它会产生一个新线程吗?我对 scala ExecutionContext 中发生的事情很感兴趣,但是由于 ExecutionContext 包装了一个 java 线程池,我认为 Java 用户也会知道答案。
例如,如果我创建一个包含 FixedThreadPool(100) 的 ExecutionContext,如果一个线程死了,他的线程池是否会替换该线程?
线程本身死后不能产生新的线程,但是线程池可以替代它。例如,Executors.newFixedThreadPool()
创建的线程池在需要时替换死线程。来自 Executors.newFixedThreadPool()
的文档:
"If any thread terminates due to a failure during execution prior to
shutdown, a new one will take its place if needed to execute
subsequent tasks."
当一个线程因为异常而死亡时,这个线程会发生什么?如果它在线程池中,它会产生一个新线程吗?我对 scala ExecutionContext 中发生的事情很感兴趣,但是由于 ExecutionContext 包装了一个 java 线程池,我认为 Java 用户也会知道答案。
例如,如果我创建一个包含 FixedThreadPool(100) 的 ExecutionContext,如果一个线程死了,他的线程池是否会替换该线程?
线程本身死后不能产生新的线程,但是线程池可以替代它。例如,Executors.newFixedThreadPool()
创建的线程池在需要时替换死线程。来自 Executors.newFixedThreadPool()
的文档:
"If any thread terminates due to a failure during execution prior to shutdown, a new one will take its place if needed to execute subsequent tasks."