我正在用Java编写代码,它有三个连续调用的主要方法。今天,我的教授告诉我通过设置代码频率来改进代码,这意味着应该为每个方法分配一个特定的时间。如果在那之前完成,它应该等待那么长时间,然后调用应该转到下一个方法。
例如:如果第一种方法的时间为3秒,那么它应该在那里等待三秒,即使它已经完成,然后转到下一个方法感觉。
我已经在我的代码中使用了一个计时器来减慢移动速度,因为它是一个GUI。我计划使用另一个计时器,但我觉得它只会减慢速度。如何在特定时间(例如3秒)内修复该方法的周期。
如果您有任何想法,请与我们联系。
答案 0 :(得分:1)
如果您无法在自己的线程上睡眠,请在另一个线程上运行该任务。单个执行程序线程可以很好地执行,您可以向其提交要执行的任务。在执行程序线程中休眠不应影响GUI线程。
private Executor executor = Executors.newFixedThreadPool(1);
public void method1() {
System.out.println("Method 1 called");
}
public void method2() {
System.out.println("Method 2 called");
}
public void method3() {
System.out.print("Method 3 called");
}
public void start() {
executor.execute(new Runnable() {
private final long WAIT_TIME = 3000; // ms
@Override
public void run() {
long startTime = System.currentTimeMillis();
method1();
sleep(startTime);
startTime = System.currentTimeMillis();
method2();
sleep(startTime);
startTime = System.currentTimeMillis();
method3();
sleep(startTime);
}
private void sleep(long startTime) {
long timeTaken = System.currentTimeMillis() - startTime;
long timeLeft = WAIT_TIME - timeTaken;
if(timeLeft < 0) return;
try {
Thread.sleep(timeLeft);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}