mada
Hacker
Hallo zusammen,
ich finde einfach keine Lösung, denke aber, dass sie einfach sein muss:
Über eine (SWT-)GUI starte ich einen Thread aus einer anderen Klasse der eine for-Schleife mit n loops ausführt:
Soweit so gut und einfach. Nun möchte ich aber diesen Thread vorzeitig unterbrechen können, falls in der GUI ein BREAK-Knopf oder ähnliches gedrückt wird und z.B. ne boolean auf false gesetzt wird, sodass eine Abfrage in der for-Schleife ein break o.ä. auslösen kann.
Denke ich zu kompliziert? Gehts auch einfacher? Irgendwie muss das doch mit notify und wait zu machen sein?
Vielen Dank schon mal für Anregungen,
Daniel
NACHTRAG:
So ist das immer -- man sucht ewig, findet nix, postet die Frage und wenige Minuten nach dem Absenden stolpert man dann doch über eine recht praktische Möglichkeit: wenn ich die Klasse des Threads ändern kann, dann könnte ich eine pleaseStop()-Methode schreiben, die eine Break Variable setzt... also quasi so:
Gibts aber auch Möglichkeiten die KEINE Veränderung der Klasse nötig machen und angenommen die Klasse hat nur eine run()-Mehode, sonst nichts...
AH GELÖST: es gibt natürlich eine Thread.stop()-Methode! Besser natürlich man schreibt eine eigene Methode in der Threadklasse, die keine Objekte in inkonsistenten Zuständen zurücklässt!
ich finde einfach keine Lösung, denke aber, dass sie einfach sein muss:
Über eine (SWT-)GUI starte ich einen Thread aus einer anderen Klasse der eine for-Schleife mit n loops ausführt:
Code:
externerThread doSomething = new externerThread(n);
doSomething.start();
Denke ich zu kompliziert? Gehts auch einfacher? Irgendwie muss das doch mit notify und wait zu machen sein?
Vielen Dank schon mal für Anregungen,
Daniel
NACHTRAG:
So ist das immer -- man sucht ewig, findet nix, postet die Frage und wenige Minuten nach dem Absenden stolpert man dann doch über eine recht praktische Möglichkeit: wenn ich die Klasse des Threads ändern kann, dann könnte ich eine pleaseStop()-Methode schreiben, die eine Break Variable setzt... also quasi so:
Code:
public void pleaseStop()
{
this.endLoop = true;
}
...
if (endLoop)
break;
Gibts aber auch Möglichkeiten die KEINE Veränderung der Klasse nötig machen und angenommen die Klasse hat nur eine run()-Mehode, sonst nichts...
AH GELÖST: es gibt natürlich eine Thread.stop()-Methode! Besser natürlich man schreibt eine eigene Methode in der Threadklasse, die keine Objekte in inkonsistenten Zuständen zurücklässt!