I can see unexpected behavior in EnhancedQueueExecutor [1]. Even when I set allowsCoreThreadTimeOut to false, sometimes happens that pool size goes below core size by a few threads.
Test scenario:
- create EnhancedQueueExecutor with coreSize=3, maxSize=6, allowsCoreThreadTimeOut=false, keepAliveTimeout=1000ms
- submit 6 threads into executor and wait until all are running so maxSize is reached
- allow all threads to finish and wait some time for threads to timeout
Expected result is that poolSize will be 3 as coreSize=3 but sometimes happens that poolSize is 2 or 1.
This might not be a bug as EnhancedQueueExecutor estimates its pool size and might allow to timeout more threads than coreSize. I'm creating this jira so it's explained for future reference.
[1] https://github.com/jbossas/jboss-threads/blob/2.3.3.Final/src/main/java/org/jboss/threads/EnhancedQueueExecutor.java
[2] https://issues.jboss.org/browse/EAP7-488
This issue was imported from JIRA. The original issue is JBTHR-78. It was originally reported by @mnovak1.