Ahja da gibt es so viele Möglichkeiten wie du das anstellen könntest.
Ansatz 1:
Du übergibst dein Spielerobjekt deinem Thread und kannst auch prüfen, ob dieser auf 0 sinkt.
class MyRunnable implements Runnable {
private Player player;
public MyRunnable(Player player) {
this.player = player;
}
@Override
public void run() {
while(player.hp > 0 && enemy.hp > 0) {
...
}
}
}
Ansatz 2:
Du hast dein Thread Objekt, vielleicht bekommst du ja von irgendwo ein ActionEvent her und kannst in dan interrupten (also einen Thread höflich beenden - findest du viele Tutorials im Inet).
@Override
public void run() {
try {
while(...) {
...
}
} catch(InterruptedException e) {
Thread.currentThread().interrupt();
}
}
und außerhalb eben:
public void deadAction(ActionEvent e) {
t1.interrupt();
}
Und noch viele mehr. Vielleicht passt ja ein Ansatz für dich.