I've found all JMXEnabledThreadPool and JMXConfigurableThreadPool are
constructed with LinkedBlockingQueue as workQueue, and the LBQs are
constructed by the default constructor. It means the queue has
Integer.MAX_VALUE capacity.
In other words, any tasks won't be rejected (Dropped) before we would
have Integer.MAX_VALUE=2Billion "Pending" tasks.
And even if a task is rejected, DebuggableTheadPool will retry to
queue it again in 1000ms interval forever.
So, once a runnable task is executed by one of these
ThreadPoolExecutor sub classes, it will not be removed nor canceled
without the completion (or OOM).

Would you confirm my understanding is correct?

regards,
maki

Reply via email to