Funcionamiento interno de newFixedThreadPool

Ayúdenme a comprender el flujo interno de newFixedThreadPool (o Cached)

Cuando escribimos las siguientes declaraciones, ExecutorService e = Executors.newFixedThreadPool (3);

e.execute (ejecutable1);e.execute (runaable2);e.execute (ejecutable3);e.execute (runaable4);e.execute (ejecutable5);

hasta 3 métodos de ejecución, se crearán tres subprocesos, cuando se llame al cuarto método de ejecución, no se creará ningún nuevo subproceso pero el trabajo estará esperando que un subproceso esté libre.

No entiendo este punto "no se creará un nuevo hilo, pero el trabajo estará esperando que un hilo esté libre". lo que creo que cuando se ejecutará runnable1 al primer subproceso creado, una vez que se termine el método de ejecución de runnable1, la ejecución de Thread1 también se finalizará, thread1 no podrá llamar al método de ejecución de runnable4. Entonces, ¿cómo Java logra ejecutar 5 Runnable con solo 3 hilos?