我正在做簡單的遊戲,這裏是代碼:如何銷燬一個線程?
public class Game extends Canvas implements Runnable {
public void start() {
t = new Thread(this);
t.start();
}
@Override
public void run() {
setVisible(true); // visibility of the thread turn on
while (!t.isInterrupted()) {
if(condition for end the game) {
t.interrupt(); //here i need to destroy the thread
setVisible(false); //visibility to off
}
update();
render();
try {
Thread.sleep(20);
} catch(InterruptedException e) {}
}
}
}
我有延伸JFrame的另一個和這個類推出主菜單,如果我的「條件結束的遊戲」是真實的,線程消失和菜單是可見的,它的好,但如果我想再次開始新的遊戲,線程的行爲是奇怪的 - 它看起來像Thread.sleep()方法從20更改爲10,因爲它的所有更快,也許我需要殺死線程,但我不知道怎麼了,感謝
'break'不是一個好的選擇,因爲它只跳出當前循環。如果你有嵌套循環,你只會升一級,但不在線程之外。回報比較好。 – TwoThe