title: Reason for calling shutdown() on ExecutorService
body: <p>I was reading about it quite a bit in the past couple of hours, and I simply cannot see any reason (<strong>valid</strong> reason) to call <code>shutdown()</code> on the <code>ExecutorService</code>, unless we have a humongous application that stores, dozens and dozens of different executor services that are not used for a long time.</p>
  <p>The only thing (from what I gather) the shutdown does, is doing what a normal Thread does once it's done. When the normal Thread will finish the run method of the Runnable(or Callable), it will be passed to Garbage Collection to be collected. With Executor Service the threads will simply be put on hold, they will not be ticked for the garbage collection. For that, the shutdown is needed.</p>
  <p>Ok back to my question. Is there any reason to call shutdown on <code>ExecutorService</code> very often, or even right after submitting to it some tasks? I would like to leave behind the case someone is doing it and right after that calls to <code>awaitTermination()</code> as this is validated. Once we do that, we have to recreate a new <code>ExecutorService</code> all over again, to do the same thing. Isn't the whole idea for the <code>ExecutorService</code> to reuse the threads? So why destroy the <code>ExecutorService</code> so soon?</p>
  <p>Isn't it a rational way to simply create <code>ExecutorService</code> (or couple depending on how many you need), then during the application running pass to them the tasks once they come along, and then on the application exit or some other important stages shutdown those executors?</p>
  <p>I'd like an answer from some experienced coders who do write a lot of asynchronous code using the ExecutorServices.</p>
  <p>Second side question, a bit smaller deals with the android platform. IF some of you will say that it's not the best idea to shutdown executors every time, and your program on android, could you tell me how do you handle those shutdowns (to be specific - when you execute them) when we deal with different events of the application life cycle.</p>
  <p>Because of the CommonsWare comment, I made the post neutral. I really am not interested in arguing about it to death and it seems it's leading there. I'm only interested in learning about what I asked here from experienced developers if they are willing to share their experiences. Thanks.</p>