暂停TimerTask直到下一次执行

时间:2011-11-17 19:33:27

标签: java timertask

我正在使用TimerTask来运行一些定期任务,该任务正在处理一组文件。我有一个要求,即如果要处理的文件数超过预定限制,则线程暂停执行并等待直到下一个周期再次开始处理文件。有没有办法暂停TimerTask直到下一个执行期,还是我必须扩展TimerTask类来实现这个功能?我看到有一个TimerTask.cancel方法,但这将取消该线程的所有进一步执行。我不希望这种情况发生。我只想让线程暂停直到下一个执行期。我没有移动到Java中的任何其他并发类的奢侈,因为我们的框架使用TimerTask,我必须坚持使用它。

非常感谢任何建议,指示或提示。

感谢,

阿沙

1 个答案:

答案 0 :(得分:1)

一种方法是将任务放在BlockingQueue上并让TimerTask remove()处理条目,直到队列为空或达到预定限制为止。任何剩余的条目都将在队列中等待下一次计划执行。