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