我有一個奇怪的問題,在這裏我想使這是使用一個線程來實現蜱更新系統的程序,使用下面的代碼:爪哇 - 線程停止沒有任何跡象
@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);
}
}
,現在突然就沒有問題運行?
有沒有人有任何想法這可能是由於?提前致謝!
你的方法'tick()'是什麼? – SubOptimal
在第一次迭代161次後,JVM已經優化了循環的執行,直到'deltaTime
fabian
@SubOptimal it調用該程序的所有更新方法,目前onlu調用一種方法來計算某些對象之間的引力吸引力。 – SchoolJava101