Thread stoppen.

Status
Nicht offen für weitere Antworten.

Dit_

Bekanntes Mitglied
Hallo zusammen!

Wie stoppe ich Thread von goButton? Bin Anfänger und habe hier im Forum nichts passendes zum Thema gefunden.
Bin für jede Hilfe dankbar :)
Gruss
Dit

Java:
// ///////////
			// GO BUTTON//
			// ///////////
			{
				goButton = new JButton();
				getContentPane().add(
						goButton,
						new AnchorConstraint(244, 926, 317, 813,
								AnchorConstraint.ANCHOR_REL,
								AnchorConstraint.ANCHOR_REL,
								AnchorConstraint.ANCHOR_REL,
								AnchorConstraint.ANCHOR_REL));
				goButton.setText("GO");
				goButton.setPreferredSize(new java.awt.Dimension(74, 25));
				goButton.setFocusTraversalKeysEnabled(false);
				goButton.setEnabled(false);
				goButton.setForeground(new java.awt.Color(0, 0, 0));
				goButton.setBackground(new java.awt.Color(212, 208, 200));

				goButton.addActionListener(new ActionListener() {

					@Override
					public void actionPerformed(ActionEvent e) {
						goButton.setEnabled(false);
						stopButton.setEnabled(true);
						editButton.setEnabled(false);
						resetButton.setEnabled(false);
						analyseButton.setEnabled(false);

						new Thread() {

							public void run() {
								erstelleObj();
								sucheDasWort();
							}

							/**
							 * Beginnt die suche
							 * 
							 * @param pass
							 */
							private void sucheDasWort()() {
								if (modell.sucheDasWort()) {
									wort.setText(ausgabe.getDasWort());
									editButton.setEnabled(true);
									resetButton.setEnabled(true);
									kopierenButton.setEnabled(true);
									stopButton.setEnabled(false);
									gefundenInText.setText(pass.gebeSuchZeit()
											+ "\n" + pass.gebeSuchRate());
								}
							}
						}.start();
					}
				});
			}
			// /////////////
			// STOP BUTTON//
			// /////////////
			{
				stopButton = new JButton();
				getContentPane().add(
						stopButton,
						new AnchorConstraint(336, 927, 408, 814,
								AnchorConstraint.ANCHOR_REL,
								AnchorConstraint.ANCHOR_REL,
								AnchorConstraint.ANCHOR_REL,
								AnchorConstraint.ANCHOR_REL));
				stopButton.setText("Stop");
				stopButton.setPreferredSize(new java.awt.Dimension(74, 25));
				stopButton.setEnabled(false);

				stopButton.addActionListener(new ActionListener() {

					@Override
					public void actionPerformed(ActionEvent e) {
							//Wie stoppe ich Thread von goButton?
					}
				});
			}
 
S

SlaterB

Gast
unmöglich,

du kannst aber im Thread-Objekt einen boolean einführen und den auf false setzen,
der Thread müsste von selbst ab und zu nachschauen, welchen Wert die Variable hat und dann selber aufhören
 

lichtemo

Mitglied
Erstelle den Threadnicht in dem ActionListener Objekt sondern in der gleichen Methode wie den Button. Achtung: du musst ihn als final deklarieren.
Dann kannst du im ActionListener den Thread mit .start() starten und an einer anderen Position in dieser Methode wieder beenden.
 

Schandro

Top Contributor
Erstelle den Threadnicht in dem ActionListener Objekt sondern in der gleichen Methode wie den Button. Achtung: du musst ihn als final deklarieren.
Dann kannst du im ActionListener den Thread mit .start() starten und an einer anderen Position in dieser Methode wieder beenden.
Nein, der Thread muss sich selber beenden (wie SlaterB bereits geschrieben hat). Auf KEINEN Fall auf den Thread stop() aufrufen!
 

lichtemo

Mitglied
Dann bleibt wohl keine andere Lösung als die breits genannte. Ich würde diesen Thread trotdem nicht anonym im ActionListener deklarieren, sondern an einer anderen Stelle in der Klasse, so dass man von überall darauf zugreifen kann. dann auf in dem ActionListener ein Objekt davon erstellen!
 
S

SlaterB

Gast
das muss natürlich sein, stimmt,
ohne Zugriff und bekannte Klasse kann man praktisch nichts machen,

außer in der umgebenden Klasse ein Klassenattribut zu setzen, darauf könnte eine anonyme innere Klasse auch zugreifen
 

Dit_

Bekanntes Mitglied
ok aber wenn ich in dem Thread
Java:
boolean abbruch;
einführe, dann kann ich ich doch diese immer noch nicht durch stopButton ändern. oder ? :shock:
 
S

SlaterB

Gast
im Moment nicht, wenn du aber eine ordentliche Klasse mit getter/setter definierst und den Thread speicherst wie von lichtemo vorgeschlagen, dann schon
 

Dit_

Bekanntes Mitglied
ok nicht anonym heisst
Java:
Thread t1 = new Thread {....?
wo erstelle ich die klasse vor dem Listener oder danach ?
 

lichtemo

Mitglied
Entweder als eigenständige Klasse (was am schönsten wäre) oder interne Klasse.
Java:
class Sucher extends Thread {
 
   public void run () {
        //was auch immer
   }
}
//....
new Sucher().start();
 

Dit_

Bekanntes Mitglied
ok folgendes problem.
Habe Extra Klasse erstellt so wie lichtemo geschrieben hat.
Dann
Java:
...
@Override
					public void actionPerformed(ActionEvent e) {
						erstelleObj();
						
						anfang = System.currentTimeMillis();
						suche = new Suche(pass);
						
						goButton.setEnabled(false);
						stopButton.setEnabled(true);
						editButton.setEnabled(false);
						resetButton.setEnabled(false);
						analyseButton.setEnabled(false);
						
						suche.start();
						
						
							ende = System.currentTimeMillis();
							wort.setText(pass.getDasWort());
							gefundenInText.setText(gebeSuchZeit() + "\n"
									+ gebeSuchRate(pass.getVersuche()));
							editButton.setEnabled(true);
							resetButton.setEnabled(true);
							kopierenButton.setEnabled(true);
							stopButton.setEnabled(false);
						...

jetzt macht das programm weiter nach
Java:
suche.start();
obwohl suche noch gar nicht abgeschlossen ist :( Was soll ich machen ?

P.S. Abbruch geht jetzt :)
 
S

SlaterB

Gast
es ist ja gerade der Sinn eines Thread, dass der Aufrufer danach weitermachen kann, beide Dinge parallel bearbeitet werden,

denkbares Vorgehen:
den Code danach in eine andere Methode, die dann der Thread am Ende seiner run-Methode aufruft,
war das nicht vorher schon so?..
 

Dit_

Bekanntes Mitglied
ja ok, aber die Klasse Suche kann doch nicht auf die Buttons von GUIMain klasse nicht zugreifen.
 
S

SlaterB

Gast
geht nicht gibts nicht, übergib das GUI-Objekt an die Thread-Klasse, im Konstruktor oder per setter
und am Ende der run-Methode rufe
gui.sucheBeendetStelleFolgendeErgebnisseDar(..);
auf,

in der GUI-Klasse muss entsprechende Methode vorhanden sein
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Thread / Prozess stoppen? Java Basics - Anfänger-Themen 22
O Thread aus dem Thread stoppen Java Basics - Anfänger-Themen 6
G Thread stoppen mit System.in.read() Java Basics - Anfänger-Themen 13
M Threads von Gui Thread starten und stoppen Java Basics - Anfänger-Themen 2
Screen Threads Wie thread stoppen/closen ? und wie GUI at runntime updaten? Java Basics - Anfänger-Themen 10
I Thread stoppen und starten Java Basics - Anfänger-Themen 3
A Jlayer: Wie sound stoppen der in einem Thread läuft Java Basics - Anfänger-Themen 7
S Thread stoppen ohne stop()? Java Basics - Anfänger-Themen 13
Dit_ Thread stoppen und wieder starten Java Basics - Anfänger-Themen 2
O anonymen Thread stoppen Java Basics - Anfänger-Themen 4
G Thread stoppen? Java Basics - Anfänger-Themen 4
T Thread stoppen Java Basics - Anfänger-Themen 4
B Thread will einfach nicht stoppen Java Basics - Anfänger-Themen 12
loadbrain Thread stoppen Java Basics - Anfänger-Themen 7
7 Thread will nicht stoppen Java Basics - Anfänger-Themen 2
F Thread nach unaktivitätszeit stoppen Java Basics - Anfänger-Themen 7
N Thread soll nur einmal ausgeführt werden, aber wie stoppen? Java Basics - Anfänger-Themen 5
T Thread stoppen und wieder starten. Java Basics - Anfänger-Themen 4
G Thread stoppen Java Basics - Anfänger-Themen 7
Leyla Thread isInterrupt Java Basics - Anfänger-Themen 18
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
A Thread XML-Dateien zusammenfügen Java Basics - Anfänger-Themen 11
F influxdb Upload in eigenem Thread Java Basics - Anfänger-Themen 2
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
T Thread beenden aus zweiter Klasse Java Basics - Anfänger-Themen 4
A Thread - Synchronized Java Basics - Anfänger-Themen 10
A Thread Producer - Consumer Java Basics - Anfänger-Themen 1
A Thread-Semhapore Java Basics - Anfänger-Themen 0
A Thread Exchanger Java Basics - Anfänger-Themen 22
A Thread-Cyclicbarrier Java Basics - Anfänger-Themen 4
B In einem Thread Endlosschleife beenden Java Basics - Anfänger-Themen 19
A Thread-Verklemmung Java Basics - Anfänger-Themen 10
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
A Thread find number Java Basics - Anfänger-Themen 8
F Thread.sleep() Java Basics - Anfänger-Themen 5
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
A Thread Java Basics - Anfänger-Themen 3
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
A Thread Java Basics - Anfänger-Themen 8
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
M Thread-Zustände Java Basics - Anfänger-Themen 6
CptK For-Schleife in Thread nach jedem Durchlauf pausieren Java Basics - Anfänger-Themen 35
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
B Endlosschleife Thread sauber beenden Java Basics - Anfänger-Themen 19
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 1
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 0
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
C Thread und TimerTask, Verstädnisproblem Java Basics - Anfänger-Themen 10
amgadalghabra Sorting Thread Launcher Java Basics - Anfänger-Themen 3
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
A Thread Java Basics - Anfänger-Themen 4
A Thread Java Basics - Anfänger-Themen 1
A Thread Java Basics - Anfänger-Themen 0
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 1
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
B Threads Thread sleep() Method einfache Frage Java Basics - Anfänger-Themen 8
W Thread Aufgabe - Vorgehensweise Java Basics - Anfänger-Themen 8
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 0
J Threads PrograssBar update während thread Java Basics - Anfänger-Themen 13
D Compiler-Fehler Wert auf Datenbank übertragen und Sleep Thread Java Basics - Anfänger-Themen 3
Spencer Reid JavaFX Memory Thread.sleep Java Basics - Anfänger-Themen 1
S Thread.sleep mit JProgressBar Java Basics - Anfänger-Themen 1
ralfb1105 Frage zu Thread Synchronisation mit wait() und notify() Java Basics - Anfänger-Themen 3
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
J JavaFX -> SocketIO -> Thread -> Update Label Java Basics - Anfänger-Themen 13
J Thread Handling Java Basics - Anfänger-Themen 9
A Problem mit Thread.sleep Java Basics - Anfänger-Themen 4
C Thread in Methode + raus aus der Schleife Java Basics - Anfänger-Themen 10
E Threads Thread in While-Schleife nur einmal starten Java Basics - Anfänger-Themen 2
F Daten von Thread an den aufrufenden zurückgeben Java Basics - Anfänger-Themen 22
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
B Thread Problem Java Basics - Anfänger-Themen 7
N KeyListener in Thread Java Basics - Anfänger-Themen 0
M Thread.sleep() Funktion Java Basics - Anfänger-Themen 1
W JLabel in Main aus Thread verändern. Java Basics - Anfänger-Themen 4
D Ausgeben welcher Thread gerade Arbeitet Java Basics - Anfänger-Themen 8
N Threads Thread-Fehler Java Basics - Anfänger-Themen 2
F Thread um Uhrzeit ausführen Java Basics - Anfänger-Themen 5
F Get/Post als eigener Thread mit Rückgabe Java Basics - Anfänger-Themen 5
J Exception in thread "main" Java Basics - Anfänger-Themen 1
F Thread der auf eine Queue wartet, sicher beenden Java Basics - Anfänger-Themen 4
B Animation mit Thread(s) Java Basics - Anfänger-Themen 23
I Thread.sleep (1000); Java Basics - Anfänger-Themen 1
M Threads Jede Klasse einem Thread zuweisen Java Basics - Anfänger-Themen 7
J Java Thread cancel() und wiederbeleben Java Basics - Anfänger-Themen 4
J BouncingBalls 1 Thread Java Basics - Anfänger-Themen 3
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
J Timer oder Thread programmieren ? Java Basics - Anfänger-Themen 10
fLooojava Laufender Thread | Boolean ändern Java Basics - Anfänger-Themen 9
T Thread Pool mit Work Stealing Java Basics - Anfänger-Themen 1
R Java Thread Java Basics - Anfänger-Themen 10
J Welche Methoden laufen im neuen thread ?? Java Basics - Anfänger-Themen 9
S Java memory fehler: Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spa Java Basics - Anfänger-Themen 5
K Thread - Methoden in die run Methode Schreiben Java Basics - Anfänger-Themen 5
N Threads Exception in thread "main"... Feher bei dem Versuch ein Radius zu berechnen Java Basics - Anfänger-Themen 4
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11
V Threads Exception in Thread behandeln Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben