我有一个 Runnable 类,它需要在上次运行后的设定间隔后运行。示例: ProcessThread 在完成后每 2 分钟运行一次。因此,如果我在 1:00 启动 ProcessThread,并且它需要 5 分钟(在 1:05 结束),那么下一次它应该运行将在 1:07。如果那个需要 3 分钟运行,(在 1:10 结束),下一个从 1:12 开始)等等..
我无法将其设置为 2 分钟的固定速率,因为这样会触发第二个线程,而第一个线程尚未完成。
所以,这是我当前的代码,但我拥有它的方式,它不断创建线程并且永远不会完成它们......所以最终我的记忆不断增长:
主要的:
public class MyMain extends Thread{
public static void main(String[] args) {
ExecuteThread execute = new ExecuteThread();
execute.start();
}
}
ExecuteThread(我拿出了try-catch):
public void run() {
MyProcessThread myProcess = new MyProcessThread();
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
myProcess.start();
while(myProcess.isAlive()){
sleep(10000);
}
scheduler.schedule(this,myProcess.getDelaySeconds(),TimeUnit.SECONDS);
}
在我让调度程序在 MyProcessThread 中运行之前,但结果相同。这看起来是正确的方向,但仍然有问题。