O método ThreadPoolExecutor.shutdown não espera que as threads terminem de executar. Por isso, é necessário implementar o método ThreadPoolExecutor.awaitTermination, passando como parâmetro o número de segundos restantes, e notificar as threads que elas precisam terminar imediatamente quando o tempo for encerrado.
O método ThreadPoolExecutor.shutdown não espera que as threads terminem de executar. Por isso, é necessário implementar o método ThreadPoolExecutor.awaitTermination, passando como parâmetro o número de segundos restantes, e notificar as threads que elas precisam terminar imediatamente quando o tempo for encerrado.