2012-05-26 55 views
-1

我对使用Java SchedulerThreadPoolExecutor颇为陌生。我想问一下,如果有实施该方案相匹配的调度方式:执行一个阻塞的调度程序,直到完成所有任务,然后再执行新任务

  1. 在时间t,调度将在未加工和加工他们的所有任务。

  2. 在时间t + 1,有新的任务来临,但调度程序无法执行它们,因为时间t的所有任务都没有处理完毕。即使时间t的某些任务已经完成处理,调度程序也不能从时间t + 1开始接受新的任务,直到所有任务完成处理。如果是这种情况,调度程序将在时间t + 1阻止任务。直到所有任务t + 1都完全处理完毕,那么调度程序将在t + 1时接受新的任务。

+0

这并不完全清楚你在第2点说的是什么。我建议你再读一遍,看看它为什么很奇怪,然后改述自己。 – ArjunShankar

+1

此外,您使用像't'和't + 1'这样的术语。这听起来像你看时间相对较大,但离散块(如时钟滴答)。 't + 1'中的'1'对你意味着什么? – ArjunShankar

回答

0

看来你想定义任务处理周期,其中没有任务将跨过周期边界。两个问题/提示:

+0

我打算使用类似定时器的功能。我在想,如果我会在特定的时间开始调度程序,比如说凌晨3点,那么对于每个时间间隔,它将开始运行任务,比如说1分钟。我不确定这是否可行。我打算使用配置文件,以便我可以配置时间以及运行调度程序的时间间隔。 我没有考虑使用invokeAll。它有什么帮助? – ktlim

+0

@ktlim:'invokeAll()'将启动所有提供的任务,然后等待它们完成。它通过阻止提交者线程来允许一定程度的确定性,直到完成所有任务... – thkala

+0

@ktlim:然而,在我看来,你需要的是比简单的作业调度器更复杂。如果你描述了你的实际问题,而不是你希望你的调度程序课程做什么,那可能是最好的。例如,如果下一个时间间隔到达并且某些任务尚未完成,会发生什么情况? – thkala

相关问题