我正在使用ScheduledExecutorService在某个时间过去之后将事件重新排队回到消息队列中。现在,我需要在触发某个事件后执行该执行程序的所有计划中待处理任务。
我已经看到可以取消挂起的任务,但是我需要在关闭执行器之前运行所有任务。有没有办法做到这一点?还是应该使用其他策略来安排此任务。
或者我应该使用其他策略来安排此任务。
是,您应该使用其他策略。
相同地暗示,ScheduledExecutorService
用于安排在确定时间过去之后运行任务。如果您不知道什么时候执行任务
如果要缓冲某些任务以便稍后未确定执行,请像收集其他任何对象一样收集ScheduledExecutorService
或Runnable
对象。使用Runnable
中的类。
如果您关心以特定顺序运行的任务,例如Callable
或Callable
,请使用Java Collections framework或LIFO实现。
[时间到了,您可以执行任务了,从队列/双端队列提供FIFO / Queue
对象,然后提交给执行服务。
如果您关心任务是串行运行的,并且没有及时重叠执行,那么请使用单线程执行程序服务,而不要使用线程池支持的服务。