如何在Java中从ScheduledExecutorService执行所有挂起的计划任务

如何在Java中从ScheduledExecutorService执行所有挂起的计划任务,java,java-threads,scheduledexecutorservice,Java,Java Threads,Scheduledexecutorservice,我正在使用ScheduledExecutorService在某个时间过去后将事件重新加入消息队列。现在,我需要在触发某个事件后,执行此执行器的所有计划挂起任务 我已经看到可以取消挂起的任务,但是我需要在执行器关闭之前运行所有这些任务。有办法做到这一点吗?或者我应该使用不同的策略来安排这些任务 或者我应该使用不同的策略来安排这些任务 是的,你应该使用另一种策略 正如同样的建议,a用于调度在经过一定时间后运行任务。如果你不知道什么时候有任务 如果您想缓冲一些任务,以便在以后不确定的时间执行,请像收集

我正在使用ScheduledExecutorService在某个时间过去后将事件重新加入消息队列。现在,我需要在触发某个事件后,执行此执行器的所有计划挂起任务

我已经看到可以取消挂起的任务,但是我需要在执行器关闭之前运行所有这些任务。有办法做到这一点吗?或者我应该使用不同的策略来安排这些任务

或者我应该使用不同的策略来安排这些任务

是的,你应该使用另一种策略

正如同样的建议,a用于调度在经过一定时间后运行任务。如果你不知道什么时候有任务

如果您想缓冲一些任务,以便在以后不确定的时间执行,请像收集任何其他对象束一样收集您的或对象。使用中的类

如果您关心以特定顺序运行的任务,例如或,请使用或实现

当到达运行任务的时间时,从队列/deque中馈送
Runnable
/
Callable
对象,并提交给执行器服务

  • 如果您关心连续运行的任务,并且在时间上不重叠它们的执行,那么请使用executor服务。
    • Executors服务=Executors.newSingleThreadExecutor​() ;
  • 相反,如果您关心尽快完成一系列任务,那么您可能希望使用一个由执行器支持的执行器服务。这假设您的部署计算机有,和/或您的任务没有(任务花费大量时间等待资源,如网络调用、读/写存储驱动器、数据库查询等)。
    • Executors服务=Executors.newCachedThreadPool()
    • Executors服务=Executors.newFixedThreadPool​( 4 ) ;

必读小贴士:阅读、重读并学习Brian Goetz等人的优秀著作。

ExecutorService::Shutdownow
对象
ScheduledExecutorService
有一个方法:。
它将返回一个可执行的
列表

警告:该方法的某些实现将中断当前正在执行的任务,而其工作尚未完成。仔细阅读Javadoc。我不相信这能达到问题的目的,我会考虑的。谢谢