Java定时器每秒100次
Java timer 100 times per second
我想 运行 某种方法每秒 100 次。
我得到的是:
Timer timer = new Timer(0, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
time+= 0.001;
System.out.println(time);
repaint();
}
});
从输出中可以明显看出计时器比应有的速度要快。它也在 cpu 上造成损失,所以我怀疑这是正确的方法。如果我设置 new Timer(1, new ActionListener()
和 time+= 0.01;
那么它比应该的慢。
谁能帮我解决这个问题?我如何每秒执行任务 100 次?
编辑:
更改为:
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
time += 0.01;
System.out.println(time);
repaint();
}
}, 1, 1);
不确定它的netbeans但输出时间是不是。它要么慢,要么快。例如输出:
57.07999999999721
57.08999999999721
57.09999999999721
57.10999999999721
BUILD STOPPED (total time: 24 seconds)
5.699999999999923
5.709999999999923
5.7199999999999225
5.729999999999922
5.739999999999922
BUILD STOPPED (total time: 8 seconds)
编辑2:
更改为 timer.scheduleAtFixedRate
,现在可以正常工作了。谢谢@GeorgeG
您可以每 0.01 秒使用一次 Timer.scheduleAtFixedRate
和 运行。
您可以使用 Thread.sleep(10L)。这将使线程休眠 10 毫秒。所以它会每秒执行 100 次
试试这个:
int i = 100;
while (i-- > 0) {
myMethod();
try { Thread.sleep(10); } catch (Exception e) {}
}
你可以调用Thread.sleep()
来减慢执行速度。
我想 运行 某种方法每秒 100 次。 我得到的是:
Timer timer = new Timer(0, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
time+= 0.001;
System.out.println(time);
repaint();
}
});
从输出中可以明显看出计时器比应有的速度要快。它也在 cpu 上造成损失,所以我怀疑这是正确的方法。如果我设置 new Timer(1, new ActionListener()
和 time+= 0.01;
那么它比应该的慢。
谁能帮我解决这个问题?我如何每秒执行任务 100 次?
编辑: 更改为:
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
time += 0.01;
System.out.println(time);
repaint();
}
}, 1, 1);
不确定它的netbeans但输出时间是不是。它要么慢,要么快。例如输出:
57.07999999999721
57.08999999999721
57.09999999999721
57.10999999999721
BUILD STOPPED (total time: 24 seconds)
5.699999999999923
5.709999999999923
5.7199999999999225
5.729999999999922
5.739999999999922
BUILD STOPPED (total time: 8 seconds)
编辑2:
更改为 timer.scheduleAtFixedRate
,现在可以正常工作了。谢谢@GeorgeG
您可以每 0.01 秒使用一次 Timer.scheduleAtFixedRate
和 运行。
您可以使用 Thread.sleep(10L)。这将使线程休眠 10 毫秒。所以它会每秒执行 100 次
试试这个:
int i = 100;
while (i-- > 0) {
myMethod();
try { Thread.sleep(10); } catch (Exception e) {}
}
你可以调用Thread.sleep()
来减慢执行速度。