Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Naja das sollte auch der Fall sein ich möchte nur verhindern dass ich eine Methode die den Thread schließen kann extra aus der Thread rufenden Klasse aufgerufen werden muss, da ich dazu ein Objekt der Klasse erstellen muss und dann eben der Konstruktor ausgeführt wird was verhindert werden soll.
stell dir das so vor ich habe eine klasse mit einem Button den ich zum kämpfen (es ist ein spiel ) drücken kann und beim ersten druck soll ein Thread gestartet werden der meinen Gegner simuliert und alle 3 Sekunden "zuschlägt". Nun will ich aber sobald er mich besiegt hat oder umgekehrt, dass der Thread gestoppt wird bzw nicht mehr speicher und co verbraucht da mein Programm eh schon langsam ist... und ich versuche das zu schaffen ohne ein Objekt der rufenden Klasse erstellen zu müssen, weshalb es toll wäre wenn ein Thread einfach sagen kann "jetzt beende ich mich"...
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.
Java:
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).
ok also Ansatz 1 kling sehr viel versprechend nur ich bin noch nicht ganz so fortgeschritten weshalb ich mir nicht sicher bin wie genau ich das auf meinen Fall ummünzen kann. Es ist so, dass ich ein Frame habe, dass die GUI für den Kampf beinhaltet und gleichzeitig auch des Spielers Aktionen durchführt das heißt kämpfen. Aber ich habe jetzt auch den thread der eigentlich genau das selbe tut wie der Spieler. nun bin ich auch nicht ganz sicher was mit
Java:
private Player player;
bezweckt werden soll, da ich kein solches Objekt erzeugen kann...
beim Ansatz 2 ist das try catch für das Thread.sleep()? weil dann verstehe ich nicht warum der Thread beendet werden sollte wenn der Thread.sleep() nicht funktioniert.
Bei diesem Try Catch um das Sleep soll nicht ein missglücktes Schlafen absichern. Damit hast du die möglichkeit einen dösenden Thread wieder zu wecken.