【问题标题】:Java timer 100 times per secondJava定时器每秒100次
【发布时间】:2015-03-19 23:07:24
【问题描述】:

我想每秒运行 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 是否,但输出时间是 waaay 的。它要么慢,要么快。例如输出:

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 @GeorgeG

【问题讨论】:

  • 为什么不将延迟设置为 10?

标签: java time timer


【解决方案1】:

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

【讨论】:

  • 我偶然发现了 new Timer().schedule ,但我在设置它时遇到了困难。你能给我举个例子吗?
  • 看看这个。 tutorialspoint.com/java/util/timer_scheduleatfixedrate.htm 基本上你必须定义一个 TimerTask,这个方法会让它在你定义的每个特定时间段内执行。
  • 它对我不起作用。新计时器();需要 int 和 ActionListener .jdk1.8
  • 看看这个页面docs.oracle.com/javase/8/docs/api/java/util/Timer.html。您将不得不像这样使用Timer() 构造函数:Timer timer = new Timer();。然后,您调用scheduleAtFixedRate() 方法,如上例所示,使用 Timertask 和时间间隔。
  • 类 javax.swing.Timer 中的构造函数 Timer 不能应用于给定类型;必需:int,java.awt.event.ActionListener 找到:无参数
【解决方案2】:

您可以使用 Thread.sleep(10L)。这将使线程休眠 10 毫秒。所以它每秒会执行 100 次

【讨论】:

  • repaint() 需要一点时间。因此执行 100 次需要一秒钟以上的时间..
【解决方案3】:

试试这个:

int i = 100;

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

【讨论】:

  • repaint() 需要一些时间。因此执行 100 次需要一秒钟以上的时间..
【解决方案4】:

你可以调用Thread.sleep()来减慢执行速度。

【讨论】:

  • repaint() 需要一些时间。因此执行 100 次需要一秒钟以上的时间..
猜你喜欢
  • 2014-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
  • 1970-01-01
相关资源
最近更新 更多