Ну, согласно setDaemon
,
Виртуальная машина Java завершается, когда все выполняющиеся потоки - все потоки демона.
Поэтому, поскольку вы используете потоки демона, ваш исполнитель не будет препятствовать завершению работы вашего приложения.Но это не значит, что нет причин звонить shutdown
.Вы все еще можете запретить отправку каких-либо дополнительных задач в какой-то момент до завершения вашего приложения.
Проверьте его, если хотите: (Я удалил материал с гуавы, но основной принцип тот же)
public static void main(String... args)
{
final ExecutorService executorService = Executors.newSingleThreadExecutor(r -> {
final Thread thread = new Thread(r);
thread.setDaemon(false); //change me
return thread;
});
executorService.submit(() -> { while (true){ System.out.println("busy"); } });
}