Java定时器每秒100次

Java定时器每秒100次,java,time,timer,Java,Time,Timer,我想每秒运行一些方法100次。 我得到的是: Timer timer = new Timer(0, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { time+= 0.001; System.out.println(time); repaint(); } }

我想每秒运行一些方法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@geogeg

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

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

您可以使用Thread.sleep(10L)。这将使线程休眠10毫秒。因此,它将每秒执行100次。您可以使用thread.sleep(10L)。这将使线程休眠10毫秒。因此,它将每秒执行100次。请尝试以下操作:

int i = 100;

while (i-- > 0) {
    myMethod();
    try { Thread.sleep(10); } catch (Exception e) {}
}
试试这个:

int i = 100;

while (i-- > 0) {
    myMethod();
    try { Thread.sleep(10); } catch (Exception e) {}
}

您可以调用
Thread.sleep()
来降低执行速度。

您可以调用
Thread.sleep()
来降低执行速度。

我偶然发现了新的计时器().schedule,但我设置它有困难。你能给我举个例子吗?看看这个。基本上你必须定义一个TimerTask,这个方法会让它在你定义的每一段时间执行一次。它对我不起作用。new Timer();需要int和ActionListener。jdk1.8查看此页面。您必须像这样使用
Timer()
构造函数:
Timer Timer=new Timer();
。然后调用
scheduleAtFixedRate()
方法,如上例所示,类javax.swing.Timer中的Timertask和interval.constructor Timer不能应用于给定的类型;必需:int,java.awt.event.ActionListener发现:没有参数我偶然发现了新的计时器().schedule,但我设置它有困难。你能给我举个例子吗?看看这个。基本上你必须定义一个TimerTask,这个方法会让它在你定义的每一段时间执行一次。它对我不起作用。new Timer();需要int和ActionListener。jdk1.8查看此页面。您必须像这样使用
Timer()
构造函数:
Timer Timer=new Timer();
。然后调用
scheduleAtFixedRate()
方法,如上例所示,类javax.swing.Timer中的Timertask和interval.constructor Timer不能应用于给定的类型;必需:int,java.awt.event.ActionListener found:no argumentsrepaint()需要一段时间。因此执行100次需要一秒钟以上的时间。.repaint()需要一点时间。因此执行100次需要一秒钟以上的时间。.repaint()需要一段时间。因此执行100次需要一秒钟以上的时间。.repaint()需要一段时间。因此执行100次需要一秒钟以上的时间。.repaint()需要一段时间。因此执行100次需要一秒以上的时间。.repaint()需要一段时间。因此执行100次需要一秒以上的时间。为什么不将延迟设置为10?为什么不将延迟设置为10?