This sub-pool is a special type of limiter. It is able to have expanded semantics than the pool
it delegates to. For example this pool provides
TaskPriority capabilities even though
the pool it runs on top of does not necessarily provide that. In addition most status's returned
do not consider the parent pools state (for example
#getActiveTaskCount() does not
reflect the active tasks in the parent pool).
Most importantly difference in this "sub-pool" vs "limiter" is the way task execution order is
maintained in the delegate pool. In a limiter tasks will need to queue individually against the
other tasks the delegate pool needs to execute. In this implementation the sub-pool basically
gets CPU time and it will attempt to execute everything it needs to. It will not return the
thread to the delegate pool until there is nothing left to process.
There are two big reasons you might want to use this sub pool over a limiter. As long as the
above details are not problematic, this is a much more efficient implementation. Providing
better load characteristics for submitting tasks, as well reducing the burden on the delegate
pool. In addition if you need limiter + priority capabilities, this is your only option.