【问题标题】:Java- How to stop ScheduledExecutorService properlyJava-如何正确停止 ScheduledExecutorService
【发布时间】:2017-03-02 10:23:25
【问题描述】:

假设,在现场,下面的代码使用 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 后正确停止此守护进程?!

【问题讨论】:

    标签: java executorservice scheduledexecutorservice


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 注意 GhostCat,您是说停止该进程的唯一方法是使用侦听端口正确杀死。
    • 感谢 GhostCat。
    • @GhostCat。伟大的。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多