shutdown() non termina i thread, ma evita che altri runnable/callable vengano aggiunti e quindi eseguiti lanciando un'eccezione nel caso venga chiamata una submit, per interrompere tutti i thread controllati dal pool si deve utilizzare shutdownNow().
Anche se non chiami shutdown(), il programma non si chiuderà finché ci saranno dei thread non daemon in esecuzione.

Cosa intendi con sequenzializzare il pool?