ich möchte einen Thread stoppen, Das mache ich i.A. mit interrupt().
UU ist er aber sehr laaaange beschäftigt. Wenn jetzt das interrupt() kommt, wird zunächst weitergerechnet und wenn das allzu häüfig passiert doch einiges an Resourcen verschwendet.
Darum möchte ich eine stopper() Methode schreiben die interrupt() auslöst und nach einem Zeitintervall prüft ob run() beendet wurde, Wenn das nicht der Fall ist möchte ich stop() aufrufen. Der Haken bei der Sache die Wartezeit soll hier nicht blockieren, sondern ich möchte direkt wieder aus der stopper() Methode zurückkehren. Das eigentliche Beenden des Threads soll dann parallel im Hintergrund geschehen.
Allein mir fehlt der Code. Wie kann man eine solche Methode implementieren
Weil stop deprecated ist will ich zunächst die Möglichkeit mit interrupt ausschöpfen, aber bevor das System einschläft schiesse ich doch lieber mit stop ab -Oder hast Du eine andere Idee, wenn man auf die Berechnung keinen Zugriff hat?
Wenn der Thread gestartetd wird, wird er auch gebraucht und zwar mit hoher Priorität, wird er aber durch den Benutzer abgebrochen ist es möglich das er noch eine zeitlang rechnet, deswegen stop().
Wenn der Thread gestartetd wird, wird er auch gebraucht und zwar mit hoher Priorität, wird er aber durch den Benutzer abgebrochen ist es möglich das er noch eine zeitlang rechnet, deswegen stop().
Priorität setzt man noch anders, damit gibst du an das der Thread beendet wird wenn das Programm beendet wird, wenn das nicht gesetzt wird läuft der Thread weiter obwohl das Programm gar nicht mehr läuft.
Oder anders, die JVM läuft so lange so lange noch Nicht-Daemon-Threads laufen.
Hatte dich aber trotzdem falsch verstanden.
Für das was du eigentlich meintest is doch t.interrupt() und this.isInterrupted() voll ok.
Fast. Nehmen wir an:
Dau startet Berechnung, merkt dann - Ups dauert aber lange und startet nächste Berechnung mit anderen Parametern -Ups immmer noch lange usw.
Jetzt wird das System immer langsamer,
Vielleicht sind auch schon einige Berechnungen beendet, aber denke an Murphy.
Und weil Dau nicht mehr an den Ergebnissen interessiert ist könnte man sie doch mit stop() stoppen!?