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

问题描述 投票:0回答:1

我正在使用ScheduledExecutorService在某个时间过去之后将事件重新排队回到消息队列中。现在,我需要在触发某个事件后执行该执行程序的所有计划中待处理任务。

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

java java-threads scheduledexecutorservice
1个回答
0
投票

或者我应该使用其他策略来安排此任务。

是,您应该使用其他策略。

相同地暗示,ScheduledExecutorService用于安排在确定时间过去之后运行任务。如果您不知道什么时候执行任务

如果要缓冲某些任务以便稍后未确定执行,请像收集其他任何对象一样收集ScheduledExecutorServiceRunnable对象。使用Runnable中的类。

如果您关心以特定顺序运行的任务,例如CallableCallable,请使用Java Collections frameworkLIFO实现。

[时间到了,您可以执行任务了,从队列/双端队列提供FIFO / Queue对象,然后提交给执行服务。

如果您关心任务是串行运行的,并且没有及时重叠执行,那么请使用单线程执行程序服务,而不要使用线程池支持的服务。

© www.soinside.com 2019 - 2024. All rights reserved.