shutdown()和shutdownNow()的混合

ste*_*fen 9 java java.util.concurrent

ScheduledExecutorServiceExecutorService,shutdown()shutdownNow()继承两个方法.他们之间的区别:

shutdown启动有序关闭,其中先前提交的任务被执行,但不会接受任何新任务.如果已经关闭,调用没有其他影响.

shutdownNow 尝试停止所有正在执行的任务,停止等待任务的处理,并返回等待执行的任务列表.

现在我想暂停等待任务的处理,而我不想中断当前正在执行的任务.我不能打断线程,因为涉及第三方库并且它们不能很好地处理中断:-(但是我需要取消当前没有执行的计划任务,因为大多数都是在一小时左右的时间内安排的.

处理这个问题的最佳方法是什么?我有什么选择?

Ser*_*nov 5

听起来像在执行程序上调用setExecuteExistingDelayedTasksAfterShutdownPolicy(false)应该可以做到这一点:

设置是否执行现有延迟任务的策略,即使此执行程序已关闭也是如此.在这种情况下,这些任务仅在shutdownNow时终止,或者在已经关闭时将策略设置为false后终止.默认情况下,此值为true.

由于它是true默认情况下,因此执行这些任务.如果将其设置为false,则不应再执行它们.这不应与您引用的文档所引用的已提交任务相混淆.当有一个自由工作者时,他们只是在队列中等待立即执行.