Вы всегда должны вызывать shutdown () или shutdownNow (). Если вы этого не сделаете, ваше приложение может никогда не завершиться, поскольку все еще существуют активные потоки (в зависимости от того, как вы завершаете свое приложение, независимо от того, находится оно в управляемой среде или нет и т. Д.).
Обычно вы вызываете shutdown () из какого-либо метода события жизненного цикла, например из Spring DisposableBean.destroy (), или если вы не используете какую-либо инфраструктуру, просто вызовите ее перед выходом из приложения.