When a new task is submitted in method execute(java.lang.Runnable),and fewer than corePoolSize threads are running, a new thread is created to handle the request, even if other worker threads are idle.

1) Why there is a need to create a new thread to handle the request if there are idle threads?

If there are more than corePoolSize but less than maximumPoolSize threads running, a new thread will be created only if the queue is full.

2) I don't understand the difference between corePoolSize and maximumPoolSize here. Secondly, how can a queue be full when threads are less than maximumPoolSize? Queue can only be full if threads are equal to or more than maximumPoolSize. Isn't it?

Edit
Report