scheduledthreadpoolexecutor的cancel()方法是否取消工作队列中的所有任务?

3phpmpom  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(675)

从本质上讲,调用 cancel() 中的方法 ScheduledFuture<>ScheduledThreadPoolExecutor.scheduleAtFixedRate 是否取消scheduledthreadpoolexecutor工作队列中可能排队的所有未来执行?飞机返回吗 ScheduledFuture 表示该任务未来所有可能的执行情况?或者它只是取消下一个计划的执行,但可能会立即执行另一个执行?

njthzxwz

njthzxwz1#

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

相关问题