Java 停止ScheduledThreadPoolExecutor的最佳方法
我正在使用单个Java 停止ScheduledThreadPoolExecutor的最佳方法,java,multithreading,scheduled-tasks,threadpool,threadpoolexecutor,Java,Multithreading,Scheduled Tasks,Threadpool,Threadpoolexecutor,我正在使用单个ScheduledThreadPoolExecutor来管理多个任务,并希望添加停止这些任务的选项。 我了解定期执行器服务上的shutdown和shutdownNow之间的区别,并且有兴趣了解它将如何影响ScheduledThreadPoolExecutor中的任务,其中任务也计划定期运行。 给定一个正在运行的ScheduledThreadPoolExecutor,该执行器既有正在运行的任务,也有计划在将来运行的一次性任务,以及计划在固定时间间隔内运行的任务(每X分钟一次)。 实现
ScheduledThreadPoolExecutor
来管理多个任务,并希望添加停止这些任务的选项。我了解定期执行器服务上的shutdown和shutdownNow之间的区别,并且有兴趣了解它将如何影响
ScheduledThreadPoolExecutor
中的任务,其中任务也计划定期运行。给定一个正在运行的
ScheduledThreadPoolExecutor
,该执行器既有正在运行的任务,也有计划在将来运行的一次性任务,以及计划在固定时间间隔内运行的任务(每X分钟一次)。
实现以下“命令”的最佳方式是什么:
您可以使用
- 及
shutdownow
shutdown
您可以使用
- 及
shutdownow
shutdown
公共列表关闭now()
,但是
请注意,当前正在执行的线程可能不会立即执行
终止如果你想这样做,那么你必须找到一种方法
通过单独的线程或其他方式发出进程终止的信号
来自Javadocs:除了尽力而为的尝试之外,没有其他保证
停止处理正在执行的任务。此实现
通过Thread.interrupt()取消任务,因此任何无法执行的任务
对中断的响应可能永远不会终止
public void shutdown()
来自Javadocs:
如果已设置ExecuteExistingDelayedTaskAfterShutdown策略
false,延迟尚未过去的现有延迟任务为
取消。除非
ContinueExistingPeriodictAsksAfterShutdown策略已设置为true,
现有定期任务的未来执行将被取消
公共列表关闭now()
,但是
请注意,当前正在执行的线程可能不会立即执行
终止如果你想这样做,那么你必须找到一种方法
通过单独的线程或其他方式发出进程终止的信号
来自Javadocs:除了尽力而为的尝试之外,没有其他保证
停止处理正在执行的任务。此实现
通过Thread.interrupt()取消任务,因此任何无法执行的任务
对中断的响应可能永远不会终止
public void shutdown()
来自Javadocs:
如果已设置ExecuteExistingDelayedTaskAfterShutdown策略
false,延迟尚未过去的现有延迟任务为
取消。除非
ContinueExistingPeriodictAsksAfterShutdown策略已设置为true,
现有定期任务的未来执行将被取消