title: ThreadPoolExecutor - Core and maximum pool sizes
body: <blockquote>
    <p>When a new task is submitted in method <code>execute(java.lang.Runnable)</code>,and fewer than <code>corePoolSize</code> threads are running, a new thread is created to handle the request, even if other worker threads are idle. </p>
  </blockquote>
  
  <p>1) Why there is a need to create a new thread to handle the request if there are idle threads? </p>
  
  <blockquote>
    <p>If there are more than <code>corePoolSize</code> but less than <code>maximumPoolSize</code> threads running, a new thread will be created only if the queue is full. </p>
  </blockquote>
  
  <p>2) I don't understand the difference between <code>corePoolSize</code> and <code>maximumPoolSize</code> here. Secondly, how can a queue be full when threads are less than <code>maximumPoolSize</code>? Queue can only be full if threads are equal to or more than <code>maximumPoolSize</code>. Isn't it? </p>