5

When a thread dies due to an exception, what happens to this thread? If it is inside a thread pool, does it spawn a new thread? I'm interested in what happens in scala ExecutionContext, but since an ExecutionContext wraps a java thread pool, I think that Java users will also know the answer.

For example, if I create an ExecutionContext wrapping a FixedThreadPool(100), if one thread dies, does he thread pool replace the thread?

Warren Dew
  • 8,790
  • 3
  • 30
  • 44
vicaba
  • 2,836
  • 1
  • 27
  • 45

1 Answers1

9

The thread itself cannot spawn a new thread after it dies, however the thread pool can replace it. For example, the thread pool created by Executors.newFixedThreadPool() replaces dead threads when needed. From the documentation for 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."

Rohit
  • 188
  • 2
  • 18
Warren Dew
  • 8,790
  • 3
  • 30
  • 44
  • will this new thread execute the task from first or continue where dead thread has stopped? – Don Jose Feb 26 '18 at 11:41
  • The new thread will execute the task afresh. If you want to continue from where the task was left by previous dead thread, then you must put such logic in code by yourself. – domino_katrino Aug 26 '22 at 10:14