如何在关机前最后一次运行任务1

时间:2015-03-16 13:11:39

标签: java

我有ScheduledExecutorService这样:

ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(command, 0L, rate, TimeUnit.MILLISECONDS);

在某些时候,我需要将其关闭。但在此之前,我需要确保command最后一次运行。像

这样的东西
public void shutdown() {
    executor.waitOneMoreTime();
    executor.shutdown();
}

我该怎么做?如果我做

public void shutdown() {
    executor.shutdown();
    executor.awaitTermination(rate, TimeUnit.MILLISECONDS);
}

我的理解是command预定的executor.shutdown()将无法保证在{{1}}之后再次运行。是吗?

2 个答案:

答案 0 :(得分:1)

试试这样:

public void shutdown() {
    try {
        executor.awaitTermination (rate, TimeUnit.MILLISECONDS);
        executor.shutdown();
    } catch(InterruptedException e) {
        // log your error
    }
}

答案 1 :(得分:1)

你可以这样做:

    executor.submit(command);
    executor.awaitTermination(1000, TimeUnit.MILLISECONDS);
    executor.shutdown();

应该调整时间以适应关闭所需的任何时间而不是预定的费率。