Java 使用计划计时器运行更长时间的任务

Java 使用计划计时器运行更长时间的任务,java,timer,Java,Timer,我需要确保的是,流程任务的下一次执行发生在前一次任务完成时(当MeetCondition()发生时,这将花费更长的时间) 感谢您的反馈。如果您想强制任务以串行方式运行,为什么要使用多个线程?事实上,我刚刚注意到TimerTask是一个单独的线程嗯…timer.schedule只接受TimerTask,并且需要run方法。我还可以实施其他解决方案吗?你能解释一下你到底想做什么吗?我似乎已经找到了我想要的。ScheduledExecutorService使我能够在单个线程中运行执行,从而确保它按顺序

我需要确保的是,流程任务的下一次执行发生在前一次任务完成时(当MeetCondition()发生时,这将花费更长的时间)


感谢您的反馈。

如果您想强制任务以串行方式运行,为什么要使用多个线程?事实上,我刚刚注意到TimerTask是一个单独的线程嗯…timer.schedule只接受TimerTask,并且需要run方法。我还可以实施其他解决方案吗?你能解释一下你到底想做什么吗?我似乎已经找到了我想要的。ScheduledExecutorService使我能够在单个线程中运行执行,从而确保它按顺序执行。
import java.util.Timer;
import java.util.TimerTask;

class Test {
  boolean in_state;
}
class Processor {
  Timer timer;
  Test test;
  Processor(Test test) {
    this.test = test;
    init();
  }
  private init() {
    this.timer = new Timer();
    this.timer.schedule(new ProcessTask(), 0, 1000/20);
  }
  private class ProcessTask extends TimerTask {
      public void run() {
        if(test.in_state) {
          return;//skip
        }
        test.in_state = true;//start flag
        if(meetsCondition()) {
         //process possibly longer
         //make sure next scheduled task execution is delayed/skipped during until this task execution is finished
        }
        test.in_state = false;//end flag
      }
    }
 }