Добрый день.
Если использовать ExecutorService в main методе, то необходимо использовать shutdown для завершения программы
public static void main(String[] args) {
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.submit(() -> Utils.sleepSeconds(1));
System.out.println("Done");
executorService.shutdown();
}
Однако в Junit тесте этого не требуется. Тест завершается без shutdown.
@org.junit.jupiter.api.Test
public void test() {
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.submit(() -> Utils.sleepSeconds(1));
System.out.println("Done");
}
Я не совсем понимаю почему так происходит. Что делает Junit, чтобы избежать нужды в shutdown?