我已在ScheduledExecutorService
中安排了一些任务。关机时,我想取消它们,并在完成后释放数据库锁。
如何等待已取消的任务完成处理?
尝试解决方案
future.cancel()
在任务停止执行之前不会阻止future.get()
之后调用future.cancel()
会立即导致CancelledExecutionException 答案 0 :(得分:1)
如何等待已取消的任务完成处理?
问题在于取消是在尽力而为的基础上完成的。 javadoc州
尝试取消执行此任务。如果这种尝试失败了 任务已经完成,已经取消,或者可以 不能因其他原因而取消。
通常,取消是通过中断实现的,而中断是一种惯例。没有什么能保证它能够正确实施。因此,即使您发送cancel
,也不能保证基础任务(如果已经运行)将完成取消。
没有可靠的方法来实现您的用例。