我试图通过延迟来循环一个Point数组,但没有任何反应,我没有得到错误。 以下是我的代码的示例:
public class Class {
private Point[] points;
private int start, delay;
public Class() {
points = new Point[] {
new Point(1, 1),
new Point(2, 1),
new Point(1, 2)
};
start = System.nanoTime();
delay = 500;
}
public void update() {
for(int i = 0; i < points.length; i++) {
long elapsed = (System.nanoTime() - startT) / 1000000;
if(elapsed > delay) {
System.out.println("x: " + points[i].x);
System.out.println("y: " + points[i].y);
start = System.nanoTime();
}
}
}
}
更新功能中的所有内容都在工作,但for
循环除外。
编辑: 这是一个只有1个线程的java Swing应用程序。
答案 0 :(得分:3)
你的一个问题是你使用的是if块而不是while循环。 if块只检查一次,看到条件为false,并跳过它。 while循环将循环,直到条件为false。
Thread.sleep(...)
调用的while循环。ScheduledThreadPoolExecutor
进行非Swing延迟。 修改强>
关于你的编辑:
编辑:这是一个只有1个线程的java Swing应用程序。
如果您需要更多帮助,那么正如我们已经提到的那样,请在您的问题中提供更多详细信息。
答案 1 :(得分:2)
要睡眠大约一段时间,请使用Thread.sleep(millis);
不要指望精度超过30毫秒。