Java- 如何正确停止 ScheduledExecutorService

Java- How to stop ScheduledExecutorService properly

假设,在现场,下面的代码是 运行 每分钟使用 ScheduledExecutorService。

此作业由 startBatch.sh 文件触发。

public class TestScheduledExecutorService {
    public static void main (String a[]) {
        ScheduledExecutorService service = null;
        try {
            TestObject runnableBatch = new TestObject() {
                int i = 0;
                @Override
                public void run() {
                    testMethod (++i);
                }
            };
            service = Executors.newSingleThreadScheduledExecutor();
            service.scheduleAtFixedRate(runnableBatch, 0, 20, TimeUnit.SECONDS);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

如果存在任何问题,如何在 live 后正确停止此守护进程?!

您必须考虑添加一个可以调用 "somehow" 的方法来告诉服务停止。例如,您的 "service" 可能正在监听某个端口并从那里获取命令。

是的,这很宽泛,但您输入的问题也是如此。

鉴于您的评论:侦听命令在这里只是一个选项。这真的取决于你的要求。它不需要是一个端口——例如,您可以使用文件观察器服务并简单地检查在目录中创建的文件。您需要的是:一个 channel 用户可以用来与您的服务器通信。该频道的外观如何;由你决定。

这就是创建 服务的要点:您必须明确您的要求,然后设计满足这些要求的解决方案。