【发布时间】:2014-01-24 10:30:13
【问题描述】:
我需要在不使用 Thread.sleep() 或什么都不做的 while 循环的情况下添加延迟。 游戏即时编辑(我的世界)时钟在“滴答”上运行,但它们可能会根据您的 FPS 波动。
public void onTick() {//Called every "Tick"
if(variable){ //If my variable is true
boolean = true; //Setting my boolean to true
/**
*Doing a bunch of things.
**/
//I need a delay for about one second here.
boolean = false; //Setting my boolean to false;
}
}
我需要延迟的原因是,如果我没有延迟,代码会运行得太快而错过它并且不会切换。
【问题讨论】:
-
为什么不能使用
Thread.sleep()? -
添加任意延迟,因为代码“运行太快”是主要代码气味。在大多数情况下,一次保持整个线程一秒钟也是完全不可接受的。更多详细信息将有助于您在此处找到更好的解决方案。
-
我不能使用 Thread.sleep() 因为它会在你设置的时间内冻结整个游戏。
-
那么,你认为我们可以提供一些任意循环吗? Thread.sleep 不会像循环那样消耗 CPU 周期……听起来你有设计问题。你需要一个单独的线程来处理游戏模型的更新,安排重绘和控制帧速率,使用类似 Thread.sleep...
-
我几乎可以肯定,你已经过头了,这不会像你想象的那样奏效。您需要对线程进行一些研究。真正的问题是,你为什么认为你需要延迟?因为我保证这是错误的解决方案。
标签: java multithreading delay sleep