Thread beenden

Status
Nicht offen für weitere Antworten.

MScalli

Bekanntes Mitglied
Habe ne kleine Klasse die mir während nem Druck der länger dauert ein kleines Fenster anzeigt.
jetzt will ich wenn der Druck fertig ist diesen Thread schliessen, nur bekomme ich das irgendwie nicht hin.
kann mir bitte mal wer helfen.
hier mein code.

Code:
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;

public class InProgress extends JFrame implements Runnable{

private static final long serialVersionUID = 2861030250112241612L;
private static JProgressBar progress;
   int min=0;
   static int max=50000000;
   int val=0;
   Thread thread;

   public InProgress(String document){
      setTitle( "Bitte Warten... " );
      setUndecorated(true); //Rahmen weg machen
      progress = new JProgressBar();
      progress.setMinimum(min);
      progress.setValue(val);
      progress.setMaximum(max);
      //label = new JLabel("Bitte Warten... Der Report wird erstellt");
      
      //JLabel tmp = new JLabel(new ImageIcon(document + "wait.gif"));
      JLabel tmp = new JLabel("<html><h3>[b]Druck läuft. Bitte warten!![/b]</h3></html>");
     
      Container content = getContentPane();
      content.setLayout( new GridBagLayout() );

      content.add( tmp, new GridBagConstraints( 0, 0, 1, 1, 1.0, 1.0,
            GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
            new Insets( 2, 2, 2, 2 ), 0, 0) );

	start();

    pack();
    setLocationRelativeTo( null );
    
    setVisible( true );
   }

   protected void start(){
      new Thread( this ).start();
   }
   public void stop(){
	   System.out.println("STOP");
	   // also hier müsste der Thread beendet werden. mit stop gehts nicht!!
   }
   public void run(){
   }
   public static void ende(){
   }
}
 
S

SlaterB

Gast
die run-Operation ist leer, der Thread ist sowieso nach einer Nanosekunde zu Ende,

willst du das InProgress-JFrame beenden?
das hat mit dem Thread wenig zu tun,
this.dispose()
wäre der passende Befehl
 
K

Körby

Gast
Du deklarierst zwar einen neuen Thread "thread", aber erstellst keine Instanz davon.
Mit "new Thread" erstellst du zwar eine Instanz, kannst aber auf diese nicht zugreifen.

Also musst du wahrscheinlich vor die Instanzierung mit "new Thread( this ).start();" noch ein "thread =" stellen.

Also so:

Code:
protected void start(){ 
      thread = new Thread( this ).start(); 
}

Dann solltest du den Thread auch über "thread" stoppen können, falls er sich nicht wie SlaterB geschrieben hat von selbst wieder beendet.
 

tfa

Top Contributor
Körby hat gesagt.:
Dann solltest du den Thread auch über "thread" stoppen können, falls er sich nicht wie SlaterB geschrieben hat von selbst wieder beendet.

Aber bitte nicht über Thread.stop(). Diese Methode ist unsicher, kaputt und deswegen deprecated.
 

MScalli

Bekanntes Mitglied
also ne instanz erstellen ok

Code:
   protected void start(){
      thread = new Thread();
      thread.start();
   }

aber wie kann ich dispose z.B. in der Methode Stop verwenden..
wenn ich den Thread z.B. nach 5 sekunden zu mache geht das einwandfrei mit dispose.. z.B. so am ende des Programms

Code:
.
.
    try {
		thread.sleep(5000);
	} catch (InterruptedException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	dispose();

aber ich will ihn beenden wenn ich fertig bin(es wird ein Viewer aufgerufen)

Ich würd ja sagen ich beende am schluss einfach das Programm mit System.exit(0).. dann wär der Thread auch weg
dann habe ich aber das prob das mein Viewer auch mit zu geht ;)

mein Ziel ist es ein bitte warten fenster bis zum beenden des Programms anzuzeigen..
evtl geht das auch einfacher.. ????
 

Atze

Top Contributor
deine dispose() methode killt ja auch das aufrufende fenster, du solltest schon versuchen die instanz thread zu beenden.

hast du dir das :

http://www.galileocomputing.de/openbook/javainsel6/javainsel_09_001.htm

mal angeschaut?

außerdem, was slaterB mit der leeren run methode meinte, du ruftst zwar thread.start() auf, aber der eigentliche code wird innerhalb des threads in der run methode ausgeführt, also kommt dort der code rein, der im thread abgearbeitet werden soll
 

MScalli

Bekanntes Mitglied
Schon ein paar mal :( bekomms aber nicht hin.

eigentlich will ich doch nur beim starten meines Programms nen Thread aufrufen der ein fenster aufmacht in dem Bitte Warten steht.
und wenn mein Programm durchgelaufen ist soll dieser beendet werden!!

wenn der Viewer nicht offen bleiben müsste wärs ja kein prob, denn dann könnt ich ein System.exit(0) ans ende hängen und es wär erledigt.
 
K

Körby

Gast
Fenster öffnen sollte möglich sein:

Einfach in der Methode run ein neues JFrame erzeugen, welches nur aus einem JTextField besteht. Das JTextField erhält dann bei der Inizialisierung den Text "Bitte warten...".
Anstelle von JTextField könntest du ein JLabel oder JTextArea verwenden, musst halt schauen, was sich am besten eignet.

Das JFrame bleibt dann solange offen, bis der Thread beendet wird.

Das JFrame sollest du dann beenden lassen, wenn das Programm am ende ist.
JFrame sollte sich mit dispose() beenden lassen. Wenn JFrame beendet wird, hat die Methode run keinen auszuführenden Code mehr und der Thread sollte sich von selbst beenden.
 
S

SlaterB

Gast
das ganze hat wirklich nichts mit Threads zu tun,
welche Aufgabe soll dem Thread bei dem ganzen zufallen?

soll das Start-Frame nach 4.7 Sekuden geschlossen werden?
dann ist ein Thread die richtige Wahl, dann kommt in run() Thread.slee(4700) und danach das dispose,

dagegen:
soll das Start-Frame nach einem Mausklick oder einem interen Ereignis (z.B. andere GUI fertig) geschlossen werden?
dann muss von diesem Ereignis ausgehend der Thread informiert werden, so dass dieser das Start-Frame schließt?
quatsch, stattdessen könnte von diesem Ereignis aus direkt das Start-Frame geschlossen werden, ein Thread ist hier ohne Funktion
 

Atze

Top Contributor
natürlich muss kein thread sein, denn in seinem fenster "tut" sich ja nicht, es sei denn er will eine laufschrift oder drei punkte (..) die sich im fenster bewegen, oder halt ne progressbar.

aber wenn er einen will, kann er doch einen haben :)
 

MScalli

Bekanntes Mitglied
ich weiss das es ohne Thread geht.. so habe ich es auch jetzt gemacht.

ich will das schon ewig mal ausprobieren denn(wie atze schon richtig gesagt hat) hab ich da was mit ner ProgressBar ist halt nur fertiger code.
Ich wollt des jetzt einfach mal von grund auf machen denn ich werde in nächster zeit bestimmt wieder mal was mit Threads zu tun haben, und das bring ich einfach net so hin das ichs kapiere.
deswegen wollte ich mal ganz klein anfangen und das so mal in die birne kriegen ;)

habe jetzt ein ganz normales Fenster gemacht und mach das am schluss zu..
mich würds aber immer noch interessieren wie ich das mit nem Thread lösen könnte..
denn das kommt ganz sicher wieder :(
 
S

SlaterB

Gast
was genau soll denn der Thread können?
von Zauberhand selber erraten, wann "m[d]ein Programm durchgelaufen ist "?

woher kommt diese Info, das musst du als erstes klären,
entweder schaut der Thread alle 200ms irgendwo nach oder jemand trägt die Info von außen heran,
dann muss der Thread eben nachschauen, ob sich sein interner Zustand geändert hat,

wenn man diese Taktik festgelegt hat, kann man langsam mit programmieren anfangen,
Thread.sleep() fürs warten, ne while-Schleife usw.,
hast du Fragen dazu oder was genau ist noch das Thema?
Beispiele gibts doch sicherlich in Lehrbüchern
 
M

Malte

Gast
arbeite auch mit einem Thread.
habe ein fenster, wo ich auf einen button klicke, worauf sich ein neues fenster öffnet.
in diesem neuen fenster kann man auch auf einen button klicken und es schließt sich wieder, somit ist man wieder bei dem ausgangsfenster.
problem ist nur, dass ich jetzt das gleiche fenster nicht nochmal öffnen kann.
hatte auch irgendwie gelesen, dass man threads nur einmal benutzen kann.
wer hat dazu eine lösung?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Thread beenden aus zweiter Klasse Java Basics - Anfänger-Themen 4
B In einem Thread Endlosschleife beenden Java Basics - Anfänger-Themen 19
B Endlosschleife Thread sauber beenden Java Basics - Anfänger-Themen 19
F Thread der auf eine Queue wartet, sicher beenden Java Basics - Anfänger-Themen 4
Bluedaishi Klassen Thread über if Anweisung starten und von anderer Klassen über Button Beenden Java Basics - Anfänger-Themen 34
P Threads Thread und Zugriff auf externe Methode beenden Java Basics - Anfänger-Themen 4
J Thread beenden? Java Basics - Anfänger-Themen 2
pun Thread "extern" beenden Java Basics - Anfänger-Themen 4
K Thread nach X-Sekunden beenden Java Basics - Anfänger-Themen 6
G Thread in der run-Methode beenden Java Basics - Anfänger-Themen 6
B Thread beenden! Java Basics - Anfänger-Themen 6
E Thread beenden Java Basics - Anfänger-Themen 13
S Thread nach Beenden erneut starten Java Basics - Anfänger-Themen 2
D Thread soll sich selbst beenden Java Basics - Anfänger-Themen 8
W Kann Thread nicht richtig beenden. Java Basics - Anfänger-Themen 11
E Thread mit System.gc beenden Java Basics - Anfänger-Themen 2
7 Thread beenden Java Basics - Anfänger-Themen 4
F Thread-Objekte beenden/zerstören Java Basics - Anfänger-Themen 5
Y Thread von außen beenden Java Basics - Anfänger-Themen 8
B Thread beenden, aber wie? Java Basics - Anfänger-Themen 8
M thread beenden und starten ---> IllegalThreadStateExcepti Java Basics - Anfänger-Themen 2
L Thread beenden Java Basics - Anfänger-Themen 4
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
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
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
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
B Thread / Prozess stoppen? Java Basics - Anfänger-Themen 22
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
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