ThreadPoolExecutor with unbounded queue not creating new threads According to the javadocs: By setting corePoolSize and maximumPoolSize the same, you create a fixed-size thread pool. So if you follow your last sentence you'd be better off just using a Executors.newFixedThreadPool(poolSize).