Согласно документации , когда вызывается shutdown()
, будут выполнены любые задачи, которые уже были отправлены (я полагаю, через submit()
или execute
). Когда вызывается shutdownNow()
, исполнитель останавливает все задачи, ожидающие обработки, а также пытается остановить активное выполнение задач.
Что я хотел бы уточнить, так это точное значение «ожидания обработки». Например, у меня есть исполнитель, и я вызываю execute()
для некоторого количества Runnable
объектов (предположим, что все эти объекты эффективно игнорируют прерывания). Я знаю, что если я сейчас вызову shutdown
, все эти объекты закончат выполнение, независимо от того.
Однако, если я вызову shutdownNow
в этот момент, будет ли это иметь тот же эффект, что и вызов shutdown
? Или часть объектов не выполняется? Другими словами, если я хочу, чтобы исполнитель завершил работу как можно быстрее, лучше ли мне всегда вызывать shutdownNow()
, даже если Runnables
передается исполнителю, и все они эффективно игнорируют прерывания?