我的问题是:我有一个类接受目录中的文件。每当第一个对象到达时,它启动一些定时器对目录中的所有文件执行压缩,这些文件在接下来的60秒内到达。Java:计时器或ScheduleExecutorService用于计算繁忙窗口中的点击次数?
这就提出了两个要求:
1)我需要能够检查是否在新文件到达“倒计时”已经在运行。我不希望file2在file1之后15秒到达,然后它们在45秒后被压缩在一起,只有在第一次完成(到一个空目录)15秒后触发第二个计划任务。
2)智能配料/非恒定轮询。例如,如果file1在时间= 0到达,file2在时间= 59s到达,它们将被压缩在一起。但是,如果file3在时间= 89s之前没有到达,并且file4在时间= 129s到达,我想确保下一个“压缩”操作不在定时器= 120s发生,而是在定时器= 149s(60秒之后file3抵达)。
换句话说:只有一个定时器/倒计时应该运行。如果它是自压缩以来的第一个文件,它应该触发一个新的文件,否则它应该被忽略。
我正在研究java.util.Timer和Java.util.concurent.ScheduledExecutorService作为解决方案,但都似乎建立了多个进程,我试图避免。
有没有更好的解决方案呢?
您如何收到文件已经“抵达”的通知? “到达”意味着什么 - 这是否意味着该文件已被完全编写并由任何应用程序创建它关闭? – 2012-02-15 14:55:03
我的课程是通过一个文件,然后将其移动到适当的目录并在压缩之前检查定时器/倒计时。 – Bing 2012-02-15 15:04:04