从本质上讲,调用 cancel()
中的方法 ScheduledFuture<>
由 ScheduledThreadPoolExecutor.scheduleAtFixedRate
是否取消scheduledthreadpoolexecutor工作队列中可能排队的所有未来执行?飞机返回吗 ScheduledFuture
表示该任务未来所有可能的执行情况?或者它只是取消下一个计划的执行,但可能会立即执行另一个执行?
从本质上讲,调用 cancel()
中的方法 ScheduledFuture<>
由 ScheduledThreadPoolExecutor.scheduleAtFixedRate
是否取消scheduledthreadpoolexecutor工作队列中可能排队的所有未来执行?飞机返回吗 ScheduledFuture
表示该任务未来所有可能的执行情况?或者它只是取消下一个计划的执行,但可能会立即执行另一个执行?
1条答案
按热度按时间njthzxwz1#
调用scheduledthreadpoolexecutor.scheduleatfixedrate返回的scheduledfuture<>中的cancel()方法是否会取消scheduledthreadpoolexecutor工作队列中可能排队的所有未来执行?
我认为这是一个很好的问题,因为你是在
ScheduledThreadPoolExecutor
. scheduledthreadpoolexecutor文档指出,当任务被取消时,它可能不会自动从队列中删除,请阅读以下内容。当提交的任务在运行前被取消时,执行将被抑制。默认情况下,此类已取消的任务不会自动从工作队列中删除,直到其延迟消失。虽然这样可以进行进一步的检查和监视,但也可能会导致取消任务的无限保留。要避免这种情况,请将setremoveoncancelpolicy(布尔值)设置为true,这将导致在取消任务时立即从工作队列中删除任务。