关机调度器-Java
我有一个类,它计划每5分钟执行一次“update”方法。问题是我希望“更新”执行固定次数。当我使用scheduler.shutdown()时,更新方法不再执行,但程序仍在运行,我想什么也不做 我怎样才能完全阻止它关机调度器-Java,java,scheduler,Java,Scheduler,我有一个类,它计划每5分钟执行一次“update”方法。问题是我希望“更新”执行固定次数。当我使用scheduler.shutdown()时,更新方法不再执行,但程序仍在运行,我想什么也不做 我怎样才能完全阻止它 static Runnable update = new Runnable() { @Override public void run() { if (count >= MAX_UPDATES) { sch
static Runnable update = new Runnable() {
@Override
public void run() {
if (count >= MAX_UPDATES) {
scheduler.shutdown();
} else {
//Do something
count++;
}
}
}
public static void main(String[] args) {
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(update, 0, 5, TimeUnit.MINUTES);
}
我认为您可以使用方法,根据文档,该方法应
尝试停止所有正在执行的任务,并停止等待任务的处理。您可以使用系统.exit(int-exitCode)代码>
请注意,如果这样做,jvm将立即终止。这也是唯一一种不会执行finally{}
块的情况。System.exit(int-exitCode)代码>@StormeHawke^有效。有点明显。谢谢在这里,我将添加它作为一个应答器,虽然System.exit()可以工作,但我很惊讶还有什么可以让您的程序继续运行。在简单假设一切正常之前,我会确保没有线程/内存泄漏。Shutdown也会这样做,但会等待执行任务完成。关键是“更新”不再执行,但程序不会执行terminate@Alex我认为这是正确的方法,您的应用程序可能不会终止,因为Executors
线程没有终止,而shutdownow
没有终止