Java-如何正确停止ScheduledExecutorService

时间:2017-03-02 10:23:26

标签: java executorservice scheduledexecutorservice

假设在实时中,使用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();
        }
    }
}

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

1 个答案:

答案 0 :(得分:1)

你必须考虑添加一个你可以调用的方法"不知何故"告诉服务停止。例如,您的"服务"可能正在侦听某个端口并从那里接收命令。

是的,这是相当广泛的,但您的输入问题也是如此。

鉴于你的意见:在这里只听一个选项。这实际上取决于您的要求。它不需要是一个端口 - 您可以使用文件观察器服务,只需检查在目录中创建的文件。您需要的是:用户可以用来与您的服务器通信的频道。这个频道是怎样的;由你决定。

创建服务时就是这样:您必须直接满足您的要求,然后设计符合这些要求的解决方案。