Java Timer每小时都会响起Sat-Sun

时间:2016-04-24 02:28:15

标签: java

我有一个Timer课程,我想安排它运行30分钟,并且它从星期六上午12点到星期日午夜每小时执行一次。

我将如何做到这一点?

感谢。

2 个答案:

答案 0 :(得分:0)

java.util.Timer类没有使用重复任务执行此操作的功能:

  • 您无法将Timer配置为>>停止<<在给定时间运行重复任务
  • 重复任务的执行模型是“固定延迟执行”;即,基于前一任务的终点安排新任务。这会导致时间滑点......如果任务需要很长时间。

简单的解决方案是:

  • 创建一个Timer对象
  • 在循环中使用schedule(TimerTask task, Date time)来安排48个单独的任务,从您需要的范围内的每个小时开始。

根据javadoc,Timer是可扩展的,应该能够有效地处理大量计划任务。

以上内容并未涉及每项任务运行30分钟的要求。目前尚不清楚这实际意味着什么,但是如果你希望任务在不超过 30分钟运行,那么你需要实现一个“看门狗”来中断运行任务的线程时间到了。需要实现该任务以适当地检查和/或处理线程中断。

答案 1 :(得分:-1)

你可以循环运行并在循环中只是睡一小时或者你想要多长时间。会这样的吗?

for(int i = 0; i < 24; i++) {
  // do whatever you want to do
  try {
    // Sleep for an hour
    Thread.sleep(6000000);
  catch(InterruptedException e) {
    e.printStackTrace();
  }
}

我可能误解了这个问题......但如果这就是你想要的......那么......是吗?

相关问题