如何在Java中从ScheduledExecutorService执行所有挂起的计划任务
我正在使用ScheduledExecutorService在某个时间过去后将事件重新加入消息队列。现在,我需要在触发某个事件后,执行此执行器的所有计划挂起任务 我已经看到可以取消挂起的任务,但是我需要在执行器关闭之前运行所有这些任务。有办法做到这一点吗?或者我应该使用不同的策略来安排这些任务 或者我应该使用不同的策略来安排这些任务 是的,你应该使用另一种策略 正如同样的建议,a用于调度在经过一定时间后运行任务。如果你不知道什么时候有任务 如果您想缓冲一些任务,以便在以后不确定的时间执行,请像收集任何其他对象束一样收集您的或对象。使用中的类 如果您关心以特定顺序运行的任务,例如或,请使用或实现 当到达运行任务的时间时,从队列/deque中馈送如何在Java中从ScheduledExecutorService执行所有挂起的计划任务,java,java-threads,scheduledexecutorservice,Java,Java Threads,Scheduledexecutorservice,我正在使用ScheduledExecutorService在某个时间过去后将事件重新加入消息队列。现在,我需要在触发某个事件后,执行此执行器的所有计划挂起任务 我已经看到可以取消挂起的任务,但是我需要在执行器关闭之前运行所有这些任务。有办法做到这一点吗?或者我应该使用不同的策略来安排这些任务 或者我应该使用不同的策略来安排这些任务 是的,你应该使用另一种策略 正如同样的建议,a用于调度在经过一定时间后运行任务。如果你不知道什么时候有任务 如果您想缓冲一些任务,以便在以后不确定的时间执行,请像收集
Runnable
/Callable
对象,并提交给执行器服务
- 如果您关心连续运行的任务,并且在时间上不重叠它们的执行,那么请使用executor服务。
Executors服务=Executors.newSingleThreadExecutor() ;代码>
- 相反,如果您关心尽快完成一系列任务,那么您可能希望使用一个由执行器支持的执行器服务。这假设您的部署计算机有,和/或您的任务没有(任务花费大量时间等待资源,如网络调用、读/写存储驱动器、数据库查询等)。
Executors服务=Executors.newCachedThreadPool()代码>
Executors服务=Executors.newFixedThreadPool( 4 ) ;代码>
必读小贴士:阅读、重读并学习Brian Goetz等人的优秀著作。
ExecutorService::Shutdownow
对象ScheduledExecutorService
有一个方法:。
它将返回一个可执行的
列表 警告:该方法的某些实现将中断当前正在执行的任务,而其工作尚未完成。仔细阅读Javadoc。我不相信这能达到问题的目的,我会考虑的。谢谢