Threadende erkennen

Status
Nicht offen für weitere Antworten.

BeSp

Aktives Mitglied
Hallo,
ich habe folgendes Problem:

Durch meine GUI wird nach dem Drücken eines Start-Knopfes ein Thread gestartet der diverse Berechnungen durchführen soll. Nun würde ich gerne irgendwie eine Meldung ausgeben wenn dieser Thread erfolgreich beendet wurde, also seine Run-Methode abgearbeitet wurde.

Den Weg mit dem Thread habe ich extra gewählt, damit die GUI während der Rechenzeit weiter benutzbar bleibt, sonst könnte man diese ja einfach blockieren und warten bis der Thread fertig ist, aber das ist extra so nicht gewollt.

Wie könnte ich das denn meinem Hauptprogramm, der GUI, mitteilen? Bin etwas verwirrt ???:L
 

DocRandom

Top Contributor
Hi BeSp!

..nun da gibt es deren mehrere Möglichkeiten:
  • Du lässt den Thread als Daemon laufen, wenn er nur durch den Button erzeugt wird und gibst am Ende ne Meldung aus
  • Du nimmst einen Timer und guckst alle 1000ms (1 Sek) nach ob Dein Thread noch läuft.
  • Du verzichtest auf den Thread, wenn Du ohnehin auf das Rechenergebnis wartest! ;)
  • usw,. usv, etc...

mfg
DocRandom
 

DocRandom

Top Contributor
BeSp hat gesagt.:
jetzt muss ich mal ganz dumm fragen, wie das denn geht :oops:
Hab Dir ein kl. Beispiel gebastelt ;)

Mal die Thread-Klasse die im Prinzip nix macht außer pennen, da ich Deinen Algorhytmus ned kennne:
Code:
package besp;
import java.util.*;
public class TestThread extends Thread {

	Random rd = new Random();
	public void run() {
		for( int i = 0; i < 10; i++) {
			System.out.println("Durchlauf: "+ (i + 1));
			try {
				Thread.sleep((rd.nextInt(5) +1 ) * 1000 );
			}catch(InterruptedException iex) {
				
			}
		}
	}
}
Dann die Timer-Task-Klasse.
Die überprüft ob der Thread schon fertig ist.
Im Constructor wird die Refenz auf den Thread übergeben.
Code:
package besp;
import java.util.TimerTask;
public class Task extends TimerTask {

	private TestThread tt;
	
	public Task(TestThread tt) {
		this.tt = tt;
	}
	public void run() {
		if(tt.getState() != Thread.State.TERMINATED) {
			System.out.println("Timer - Thread arbeitet noch");
		}else {
			System.out.println("Timer - Thread ist beendet");
			this.cancel();
		}
	}
}
Und zu guter letzt noch ne kleine Mainklasse, die erklärt sich von selbst ;)
Code:
package besp;
import java.util.*;
public class TestThreadStatus {
	
	public static void main(String[] args) {
		//Thread erzeugen
		TestThread tt = new TestThread();
		//Timer erzeugen
		Timer timer = new Timer();
		//Thread starten
		tt.start();
		//Timer starten mit 1 sek. verzögert und wiederholt sich bis 
		// der Thread fertig ist jede sekunde
		timer.schedule(new Task(tt), 1000, 1000);
	}
}

Ich hoffe das kl. Beispiel hilft Dir weiter.

mfg
DocRandom
 

BeSp

Aktives Mitglied
Vielen Dank!

Ich habe das jetzt so ähnlich eingebaut. Es funktioniert auch bislang.
Kann es aber sein, dass der Timer zusätzlich einiges an Systemleistung in Anspruch nimmt??

mfg
 

DocRandom

Top Contributor
Kann es aber sein, dass der Timer zusätzlich einiges an Systemleistung in Anspruch nimmt??
Ja, es kann nicht nur sein, sondern es ist deffinitiv so.
Da der Timer im Prinzip auch nix anderes wie ein Thread ist, welcher eben periodisch abgearbeitet wird.
Daher habe ich in meinem geposteten Beispiel auch
Code:
this.cancel();
verwendet, wenn der zu überwachende Thread beendet ist.
Somit wird auch der Timer beendet, da es ja nix mehr zum Überprüfen gibt.

mfg
DocRandom
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
JAVAnnik auf Threadende warten Java Basics - Anfänger-Themen 6
T scanner eingaben erkennen und umtauschen Java Basics - Anfänger-Themen 4
B Zusammenhängende Blöcke bei x-gewinnt erkennen? Java Basics - Anfänger-Themen 14
D falsche eingabe erkennen Java Basics - Anfänger-Themen 2
H Logik Fehler erkennen Java Basics - Anfänger-Themen 21
1 Wie dieses Muster am einfachsten erkennen? Java Basics - Anfänger-Themen 32
Yasemin bahar Muster erkennen Java Basics - Anfänger-Themen 13
U Muster in einem Array erkennen Java Basics - Anfänger-Themen 8
N Eingabe erkennen, ob groß oder kleingeschrieben worden ist Java Basics - Anfänger-Themen 22
N palindrom erkennen Java Basics - Anfänger-Themen 3
A Figur erkennen, aber Abweichung falsch Java Basics - Anfänger-Themen 2
C Erkennen ob Frame geschlossen wurde Java Basics - Anfänger-Themen 2
M Rationale Zahl erkennen - Kurze Frage zum Restwert nach Division Java Basics - Anfänger-Themen 3
P Eigenschaft eines imperativen Algo (Pseudocode) sofort erkennen Java Basics - Anfänger-Themen 1
G Verlassen einer ComboBox erkennen Java Basics - Anfänger-Themen 16
S Java Großbuchstabe erkennen Java Basics - Anfänger-Themen 5
D Wenn ich repaint(); mache, flackert es so stark, das man fast nichts erkennen kann. Java Basics - Anfänger-Themen 11
B Unterschiede in einer Liste erkennen Java Basics - Anfänger-Themen 1
O String: Befehl und Wert erkennen. Java Basics - Anfänger-Themen 4
S Zeilenumbruch mit Scanner erkennen Java Basics - Anfänger-Themen 9
J Leerzeichen im Pfad automatisch erkennen Java Basics - Anfänger-Themen 30
M Input/Output Zeilenumbrüche erkennen und beibehalten Java Basics - Anfänger-Themen 4
X XML-Eintrag an Attribute erkennen Java Basics - Anfänger-Themen 2
N Erkennen ob Linkshänder Maus Java Basics - Anfänger-Themen 4
L In Javakara Palindrom erkennen. Java Basics - Anfänger-Themen 9
B Tastatureingabe erkennen Java Basics - Anfänger-Themen 8
D Input/Output Buchstaben als bestimmte Zahl erkennen Java Basics - Anfänger-Themen 4
F Blinken oder Dauer ein erkennen Java Basics - Anfänger-Themen 6
F Linien und Kurven erkennen Java Basics - Anfänger-Themen 2
T Richtigen Wert erkennen Java Basics - Anfänger-Themen 9
D Klassenmethode: Befehl erkennen, dann int zurückgeben Java Basics - Anfänger-Themen 2
S Laufzeitfehler erkennen Java Basics - Anfänger-Themen 3
T Erste Schritte Methoden anwenden und erkennen Java Basics - Anfänger-Themen 5
D Erste Schritte Array erkennen Java Basics - Anfänger-Themen 4
B Erkennen, wann static oder nicht? Java Basics - Anfänger-Themen 7
J Byte Folge erkennen Java Basics - Anfänger-Themen 5
F Attribute von Feldinhalten erkennen Java Basics - Anfänger-Themen 6
N Erste Schritte Doppelwerte erkennen Java Basics - Anfänger-Themen 5
H Schachbrett erkennen Java Basics - Anfänger-Themen 19
T Erste Schritte Leerzeile in JAVA erkennen /übergehen Java Basics - Anfänger-Themen 9
S Erkennen ob Zahl durch 500Teilbar ist Java Basics - Anfänger-Themen 21
Java-Insel StringBuilder Zeilenumbrüche erkennen Java Basics - Anfänger-Themen 3
H Datei in kleine Stücke teilen und wieder erkennen Java Basics - Anfänger-Themen 10
T Erkennen ob ein Pfad lokal oder im Netzwerk ist Java Basics - Anfänger-Themen 13
X String Sonderzeichen/Zahlen erkennen Java Basics - Anfänger-Themen 3
P System - Tage erkennen ( System Time ?) Java Basics - Anfänger-Themen 3
M Betriebssystem erkennen? Java Basics - Anfänger-Themen 12
lumo Collections Array - erkennen von positionsänderungen Java Basics - Anfänger-Themen 5
M Muster erkennen. Idee: Fassade. Java Basics - Anfänger-Themen 3
M Java-Prog soll Texte innerhalb Bildern erkennen Java Basics - Anfänger-Themen 2
S Leere Datei erkennen Java Basics - Anfänger-Themen 5
E ActionListener in anderer Klasse erkennen Java Basics - Anfänger-Themen 13
Kukulkan Java-Version (ME, SE) erkennen und darauf reagieren? Java Basics - Anfänger-Themen 35
E Position erkennen und überlappungen feststellen Java Basics - Anfänger-Themen 4
3 Leerzeichen erkennen Java Basics - Anfänger-Themen 3
A Gruppen von Namen erkennen Java Basics - Anfänger-Themen 21
M In Router einloggen und PCs im Netzwerk erkennen Java Basics - Anfänger-Themen 18
M ziffer in zahl erkennen mit boolean Java Basics - Anfänger-Themen 12
D Zahl erkennen Java Basics - Anfänger-Themen 4
T Image Position erkennen Java Basics - Anfänger-Themen 6
S Sonderzeichen in einem String erkennen Java Basics - Anfänger-Themen 20
S Filelock erkennen Java Basics - Anfänger-Themen 6
A Angeschlossenes Gerät am Com Port erkennen Java Basics - Anfänger-Themen 4
L Zeilenwechselsequenz erkennen aus der Datei heraus Java Basics - Anfänger-Themen 2
S Erkennen der Eingabe Java Basics - Anfänger-Themen 13
G eine straße im kartenspiel erkennen (algorithmus) Java Basics - Anfänger-Themen 4
G Bildinformationan auslesen - OCR - Zahlen erkennen Java Basics - Anfänger-Themen 10
B Properties erkennen, auslesen Java Basics - Anfänger-Themen 7
M in Textfile Strukturen erkennen Java Basics - Anfänger-Themen 5
kulturfenster Teilstring erkennen Java Basics - Anfänger-Themen 5
L Laufwerksauswahl / Laufwerke erkennen Java Basics - Anfänger-Themen 3
E Klassen erkennen in einer Aufgabenstellung Java Basics - Anfänger-Themen 6
L path einlesen und erkennen ob es für windows oder linux ist Java Basics - Anfänger-Themen 8
H Zeilenanzahl eines Strings erkennen Java Basics - Anfänger-Themen 2
S Umlaute und Sonderzeichen erkennen Java Basics - Anfänger-Themen 12
C Erkennen einer gedrückten Taste Java Basics - Anfänger-Themen 6
S CD/DVD-Laufwerke erkennen mit Java Java Basics - Anfänger-Themen 3
R erkennen von Wortende Java Basics - Anfänger-Themen 5
N Veränderungen in JTextArea erkennen Java Basics - Anfänger-Themen 5
K Wortpaare in Texten erkennen Java Basics - Anfänger-Themen 8
C Japanische Zeichen erkennen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben