title: when does executor really create new thread
body: <p>I'm confused about when new threads are created as for executor. My understanding is: as for cachedthreadpool, new threads are created according to the submission of tasks. As for fixedthreadpool and singlethread, thread is created in advance regardless of the submission of tasks. Is my understanding wrong?</p>
  
  <pre><code>ExecutorService exec = Executors.newCachedThreadPool(); 
  exec.execute(new LiftOff());
  
  ExecutorService exec = Executors.newFixedThreadPool(3); // Are the three threads created 
                                                          // after this line executes?
  exec.execute(new LiftOff());
  
  ExecutorService exec = Executors.newSingleThreadExecutor(); // Is the single thread created 
                                                              // after this line executes?
  exec.execute(new LiftOff());
  </code></pre>