【问题标题】:Timer inside while loopwhile循环内的定时器
【发布时间】:2013-05-13 06:48:23
【问题描述】:

我将如何像在 Java 中那样在 while 循环中实现计时器?

while (game not ended) {
//do something
(wait 5 seconds)
}

会是这样吗?:(java.util.Timer)

int delay = 1000; //milliseconds

    while (game not ended) {
        //do something
        new Timer(delay, taskPerformer).start();
    }

【问题讨论】:

  • 为什么要这样做?你的目标是什么?
  • 搜索“[java] 游戏事件循环”。 Java 中的 Timer 是一个 异步 事件源,不适合游戏循环 - 但也可能是游戏应该以异步方式编写的情况。 (它是什么种类的游戏?现有的游戏事件循环是什么样子的?它是在 UI 上使用 Swing 吗?)
  • @AndrewThompson 这是一款使用 AI 的挥杆俄罗斯方块游戏。代理解决最有效的移动块缓冲区。我希望每个动作都在 gui 中播放一段设定的时间,以便标记可以在播放时看到每个动作......没有延迟,您只会看到最后一个动作。
  • 到底有什么问题? @安德鲁汤普森

标签: java swing loops timer


【解决方案1】:

你可以使用Threadstaticsleep()方法。

while (game not ended) {
   //do something
  Thread.sleep(5000);
}

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      不要阻塞 EDT(事件调度线程)——当这种情况发生时,GUI 将“冻结”。而不是调用 Thread.sleep(n) 实现 Swing Timer 用于重复任务或 SwingWorker 用于长时间运行的任务。详情请见Concurrency in Swing

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-24
        • 2016-03-14
        • 2011-06-19
        • 2016-01-14
        • 1970-01-01
        • 2018-11-05
        • 2016-07-19
        相关资源
        最近更新 更多