我有一个奇怪的问题,我正在尝试使用以下代码制作一个使用线程来实现刻度更新系统的程序:
@Override
public void run(){
long lastTime = System.nanoTime();
long deltaTime;
float passedTime = 0;
long ticks = 0;
while(true){
long currentTime = System.nanoTime();
deltaTime = currentTime - lastTime;
lastTime = currentTime;
passedTime += deltaTime / tickTime;
if(passedTime * 20 > ticks){
ticks++;
tick();
System.out.println(ticks);
}
}
}
这工作正常,除了在恰好 161 个滴答之后它只是停止运行,它不会抛出任何东西,没有异常,没有错误,什么都没有。但是,只要我执行以下操作:
@Override
public void run(){
long lastTime = System.nanoTime();
long deltaTime;
float passedTime = 0;
long ticks = 0;
long useless = 0;
while(true){
long currentTime = System.nanoTime();
deltaTime = currentTime - lastTime;
lastTime = currentTime;
//Don't focus on this bit, I know it's a bit odd.
passedTime += deltaTime / tickTime;
if(passedTime * 20 > ticks){
ticks++;
tick();
System.out.println(ticks);
}
useless++;
System.out.print(useless);
}
}
现在突然它运行没有问题?
有谁知道这可能是由于什么?提前致谢!