gpt4 book ai didi

java - 我首先做什么 - 取消 ScheduledFuture 或关闭 ScheduledExecutorService?

转载 作者:太空狗 更新时间:2023-10-29 22:45:22 60 4
gpt4 key购买 nike

我的代码:

ScheduledServiceExecutor service = Executors.newSingleThreadScheduledExecutor();
ScheduledFuture future = service.scheduleWithFixedDelay(
runnable, 1, 1, TimeUnit.MILLISECONDS
);
// ...
// now it's time to shut it all down
future.cancel(true);
service.shutdown();

我在这儿吗?也许我应该这样做:

service.shutdown();
future.cancel(true);

你怎么看?

最佳答案

在这种情况下,您只需要调用 shutdown()

ScheduledThreadPoolExecutor 中有两个选项,这是在此处幕后创建的。 getExecuteExistingDelayedTasksAfterShutdownPolicy() 默认为 truegetContinueExecutingPeriodicTasksAfterShutdownPolicy() 默认为 false。因此,简单地关闭服务将导致周期性任务被取消,但任何延迟的任务仍将被执行。由于所讨论的任务是一个周期性任务,它将在关闭时被取消。

我个人的意见是最好在关机前手动调用.cancel(true)。虽然在操作上这没有什么不同的影响,但我认为对于可能不知道执行程序选项的程序员来说,看到定期任务应该在关闭时被取消是件好事。这也意味着,如果有人进来并将执行器更改为关闭时不会取消的执行器,则该任务仍将被取消。所以说真的,我认为这里的主要好处是代码清晰。

关于java - 我首先做什么 - 取消 ScheduledFuture 或关闭 ScheduledExecutorService?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10737350/

60 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com