You just need to read the javadoc:
public static ExecutorService newFixedThreadPool(int nThreads)
Creates a thread pool that reuses a fixed number of threads operating off a shared unbounded queue. At any point, at most nThreads threads will be active processing tasks. If additional tasks are submitted when all threads are active, they will wait in the queue until a thread is available.
(emphasis mine)
If you want maximum flexibility, you can use the ThreadPoolExecutor constructor, which will let you choose every detail you want.