Java-如何正确地停止ScheduledExecutorService
问题描述:
假设在实时下面的代码使用ScheduledExecutorService每分钟运行一次。Java-如何正确地停止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();
}
}
}
如何在出现任何问题后正确停止此守护进程?
答
您必须考虑添加一种方法,您可以通过“某种方式”来通知服务停止。例如,您的“服务”可能在某个端口上侦听并从那里接收命令。
是的,这是相当广泛的,但你的输入问题也是如此。
给出您的评论:听命令只有一个选项在这里。这真的取决于你的要求。它不需要是一个端口 - 您可以使用文件观察器服务,只需检查目录中创建的文件。你需要的是:频道,用户可以用它来与你的服务器进行通信。这个频道是怎样的;由你决定。
这就是创建服务时的要点:您必须直接得到您的要求,然后设计满足这些要求的解决方案。
注意到GhostCat,你在说停止这个过程的唯一方法是使用侦听端口权限进行查杀。 – DEADEND
感谢和注意到GhostCat。 – DEADEND
@ GhostCat。大。再一次感谢你。 – DEADEND