When a new task is submitted in method
execute(java.lang.Runnable)
,and fewer thancorePoolSize
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 thanmaximumPoolSize
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?
Here are Sun’s rules for thread creation in simple terms: