2011-11-17 49 views
1

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

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

感谢,

阿莎

回答

1

一种办法是穿上BlockingQueue的任务,让TimerTaskremove()和工艺的条目,直到队列为空或预先确定的已经达到极限。任何剩余的条目将在队列中等待下一次计划执行。

+0

谢谢你的建议。我使用LinkedBlockingQueue来实现这一点,它解决了我的问题。谢谢,非常感谢。 – Alice

+0

优秀。您可以点击左侧的[空格勾号](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)接受此答案。 – trashgod