gpt4 book ai didi

java - ScheduledExecutorService:如何等待取消的任务完成?

转载 作者:行者123 更新时间:2023-11-30 10:56:02 25 4
gpt4 key购买 nike

我已经在 ScheduledExecutorService 中安排了一些任务。在关闭时,我想取消它们,并在它们全部完成后释放数据库锁。

如何等待取消的任务完成处理?

尝试的解决方案

  • 根据我的测试,future.cancel() 在任务停止执行之前不会阻塞
  • future.cancel() 之后调用 future.get() 会立即导致 CancelledExecutionException
  • 我不想等待整个执行器关闭,因为它在组件之间共享

最佳答案

How can I wait for the cancelled tasks to finish processing?

问题是取消是在尽力而为的基础上完成的。 javadoc

Attempts to cancel execution of this task. This attempt will fail ifthe task has already completed, has already been cancelled, or couldnot be cancelled for some other reason.

通常,取消是通过中断实现的,中断是一种惯例。没有什么能保证它会被正确实现。因此,即使您确实发送了一个 cancel,也无法保证底层任务(如果已经在运行)将完成取消。

没有可靠的方法来实现您的用例。

关于java - ScheduledExecutorService:如何等待取消的任务完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33131427/

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