关机调度器-Java

关机调度器-Java,java,scheduler,Java,Scheduler,我有一个类,它计划每5分钟执行一次“update”方法。问题是我希望“更新”执行固定次数。当我使用scheduler.shutdown()时,更新方法不再执行,但程序仍在运行,我想什么也不做 我怎样才能完全阻止它 static Runnable update = new Runnable() { @Override public void run() { if (count >= MAX_UPDATES) { sch

我有一个类,它计划每5分钟执行一次“update”方法。问题是我希望“更新”执行固定次数。当我使用scheduler.shutdown()时,更新方法不再执行,但程序仍在运行,我想什么也不做

我怎样才能完全阻止它

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
没有终止