Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 停止ScheduledThreadPoolExecutor的最佳方法_Java_Multithreading_Scheduled Tasks_Threadpool_Threadpoolexecutor - Fatal编程技术网

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
  • 将继续策略设置为false,然后调用
    shutdown

  • 您可以使用

    那么你的两个案子是

  • 呼叫
    shutdownow
  • 将继续策略设置为false,然后调用
    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, 现有定期任务的未来执行将被取消