我想每秒运行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,现在可以正常使用了。 THnx @乔治

最佳答案

您可以使用Timer.scheduleAtFixedRate并每0.01秒运行一次。

关于java - Java计时器每秒100次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28067066/

10-12 03:37