我猜你的意思是 ExecutorService 的 shutdownNow() 方法。这是文档(我将相关部分格式化为粗体):
尝试停止所有正在执行的任务,停止等待任务的处理,并返回等待执行的任务列表。
此方法不等待主动执行的任务终止。使用 awaitTermination 来做到这一点。
除了尽最大努力停止处理正在执行的任务之外,没有任何保证。例如,典型的实现将通过 Thread.interrupt() 取消,因此任何未能响应中断的任务可能永远不会终止。
线程中断是一个协作过程,你的线程必须被实现以便它们响应中断。
编辑
1)关于 Thread.currentThread.interrupt() 看到这个问题:Why invoke Thread.currentThread.interrupt() when catch any InterruptException?
因此,仅当您有其他方法/线程组监视中断状态时才需要执行此操作。在你的情况下,可能不会,但它不会受到伤害。
2)似乎在“ShellUtils.executeCommand”中您正在运行外部程序。如果此方法对线程中断没有反应,这可能是问题的根源。