Currently are working only two strategies "direct-handoff" and "unbound-queue". There direct mapping that parameters to corePoolSize and maxPoolSize isn't possible for desired result. E.g. corePoolSize is ignored at "unbound-queue" startegy. Please read carefully ThreadPoolExecutor javadoc. Setup method is a bit problematic in particular retain a backward compatibility.