我正在使用TimerTask来运行一些定期任务,该任务正在处理一组文件。我有一个要求,即如果要处理的文件数超过预定限制,则线程暂停执行并等待直到下一个周期再次开始处理文件。有没有办法暂停TimerTask直到下一个执行期,还是我必须扩展TimerTask类来实现这个功能?我看到有一个TimerTask.cancel方法,但这将取消该线程的所有进一步执行。我不希望这种情况发生。我只想让线程暂停直到下一个执行期。我没有移动到Java中的任何其他并发类的奢侈,因为我们的框架使用TimerTask,我必须坚持使用它。
非常感谢任何建议,指示或提示。
感谢,
阿沙
答案 0 :(得分:1)
一种方法是将任务放在BlockingQueue
上并让TimerTask
remove()
处理条目,直到队列为空或达到预定限制为止。任何剩余的条目都将在队列中等待下一次计划执行。