1

我有以下课程,它安排每 5 分钟执行一次“更新”方法。问题是我希望“更新”执行固定次数。当我使用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);
}
4

2 回答 2

3

我认为您可以使用shutdownNow方法,这应该Attempts to stop all actively executing tasks and halts the processing of waiting tasks根据文档。

于 2013-08-27T20:36:54.580 回答
0

您可以使用System.exit(int exitCode);

请注意,如果您这样做,jvm 将立即终止。这也是唯一finally{}不会执行块的情况。

于 2013-08-27T20:43:41.597 回答