2013-05-18 181 views
2

我会如何在Java中像在Java中一样在while循环中实现一个计时器?while 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(); 
    } 
+1

你为什么要这样做?你的目标是什么? –

+0

搜索“[java]游戏事件循环”。 Java中的Timer是一个*异步*事件源,不适用于游戏循环 - 但也可能是游戏应该以异步风格编写的情况。 (什么样的游戏呢?现有的*游戏事件循环是什么样子的?它使用的是用户界面的Swing吗?) – user2246674

+0

@AndrewThompson它用于使用AI的swing俄罗斯方块游戏。代理可以解决最有效的棋子缓冲。我希望每个动作都能在gui中进行一段时间的设定,这样标记就可以看到每个动作在播放时......毫不拖延地只看到最后一步。 –

回答

1

不要堵塞EDT(事件指派线程) - 的图形用户界面将“冻结”当这种情况发生。而不是调用Thread.sleep(n)执行重复任务的Swing Timer或长时间运行的任务执行SwingWorker。有关更多详细信息,请参阅Concurrency in Swing

2

你可以使用Threadstaticsleep()方法。

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