Thread erneut ausführen..

Status
Nicht offen für weitere Antworten.

nArF

Mitglied
habe folgendes problem, nachdem ich hier einiges ueber threads gelesen habe, wollte ich meine berechnungen auch in threads laufen lassen...

Code:
Thread testthread = new Thread(){  
  public void run(){ 
     int testindex = 0;
     for (int f = 0; f<10000001;f++)
	 {
	   if (f % 1000 == 0 ) testindex++;
	 } 
	    inputTArea.setText(String.valueOf(testindex));
	 } };

 private void ButtonActionPerformed(ActionEvent evt) { 
		 testthread.start();
		 inputTArea.setText("hmm test");
     }

wenn ich nun den button drücke führt er den thread nur einmal aus, und wenn ich
anstatt testthread.start(); eindfach testthread.run(); mache,
dann führt er zwar jedesmal beim drücken des buttons den thread neu aus, aber dann muss er erstmal
den kompletten testthread durchlaufen bevor er
inputTArea.setText("hmm test"); ausführt.
keine Ahnung .p

ich will halt wissen wie ich mit testthread.start(); den thread jedesmal wieder neu ausführen kann.
THX
 

Miskral

Mitglied
Hi,

Das Problem ist das wenn die run() Methode abgearbeite wurde der Thread stirbt. Das heist du muß in der run() methode eine Schleife einbauen. Ich mache das meistens dann in dieser Art :

Code:
  public void run()
  { 
    while(true)
    {
      synchronized(this)
      {
        try
        {
          this.wait();
        }
        catch (InterruptedException ex)
        {
          break;
        }
        int testindex = 0; 
        for (int f = 0; f<10000001;f++) 
        { 
          if (f % 1000 == 0 ) testindex++; 
        } 
          inputTArea.setText(String.valueOf(testindex)); 
        } 
      }
    }

  private void ButtonActionPerformed(ActionEvent evt) 
  { 
    synchronized(this)
    {
      this.notify();
    }
    inputTArea.setText("hmm test"); 
  }

In diesem Fall mußt du den Thread aber kurz nach dem Anlegen auch starten. Der Thread geht dann in einen Synchronisierten Bereich. Dort trift er auf den Befehl das er auf ein Ereignis warten soll. Diesese Wird durch notify() in der anderen Methode erreicht.
Sollte noch was unklar sein kannst du dich ja noch mal hier melden.

Gruß chris
 

me.toString

Bekanntes Mitglied
Vergiss nicht, dass wenn du selbst die Methode run() aufrufst der Code nicht in einem eigenen Thread läuft. Nur wenn du start() aufrufst, wird wirklich ein neuer Thread gestartet !! Wenn du mit 'ner IDE mit Debugging arbeitest (also ich kenn's vom JBuilder), dann kannst du dir anschauen, wie welche Threads laufen bzw. ob überhaupt eigene Threads aufgemacht werden.
 

nArF

Mitglied
jo thx,
das mit dem synchronized is mir zwar noch nen bissl unklar (habe nur Bsp mit variablen auf true und fasle gesehen als bedingung fuer while-schleife)

und nachdem ich den thread einfach im buttoon initialisiert habe, kann man es natuerlich auch immer wieder neu mit der methode start() starten .p

THX!

aber wenn nun der thread ausgefuhrt und beendet wird, wird er auch direkt aus dem speicher gelöscht, oder wird beim nächsten betätigen des buttons einfach ein neuer zusätzlicher thread init. und gestartet?
 

Miskral

Mitglied
nArF hat gesagt.:
jo thx,
das mit dem synchronized is mir zwar noch nen bissl unklar (habe nur Bsp mit variablen auf true und fasle gesehen als bedingung fuer while-schleife)

Mit synchronized sagst du java das sich immer nur ein Tread in dem Block befinden kann. Zu dem wird auf ein Objekt synchronisiert, d.h. das alle Blöcke die auf das selbe Objekt synchronisiert zur gleichen Zeit nur von einem Thread benutzt werden können.

Mit while(true) erstelltst du eine Endlosschleife. Diese Schleife wird niemals beendet, es sei denn es gibt eine Nebenbedingung in der Schleife. In meiner Schleife ist das wenn dem Thread ein Interrupt (Unterbrechnung) gesendet wird. Dann löst wait() eine InterruptedException aus, welche zu folge hat das die while - Schleife mit break beendet wird.

nArF hat gesagt.:
und nachdem ich den thread einfach im buttoon initialisiert habe, kann man es natuerlich auch immer wieder neu mit der methode start() starten .p

Du mußt den Thread nur einmal starten. Der Thread wird nicht beendet, sondern reagiert nur immer wenn er ein notify erhält.

Ich hoffe es ist jetzt ein bischen klarer geworden wie diese paar Zeilen code funktionieren. Ansonsten schau dir noch mal das Kapittel über Threads und synchroniosation in einem Java - Buch an.

Gruß Chris[/b]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Thread nach Beenden erneut starten Java Basics - Anfänger-Themen 2
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
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
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
S Methoden Multi-Thread und Methoden Objects. Java Basics - Anfänger-Themen 1
J Thread erstellen (BlueJ Projekt) Java Basics - Anfänger-Themen 3
P Exception in thread "main" java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 1
F Threads Variable aus einem Thread in main Methode? Java Basics - Anfänger-Themen 9
K Exception in thread "main" Java Basics - Anfänger-Themen 7
L Thread-Frage Java Basics - Anfänger-Themen 2
E Was ist ein idle-thread? Java Basics - Anfänger-Themen 1
D Exception in thread "AWT-EventQueue-0" Java Basics - Anfänger-Themen 8
J Threads Prozess in Thread auslagern Java Basics - Anfänger-Themen 2
G Thread mehrmals starten und schliessen Java Basics - Anfänger-Themen 6
F Thread Koordination (Vorteile/Nachteile) Java Basics - Anfänger-Themen 0
O Thread aus dem Thread stoppen Java Basics - Anfänger-Themen 6
O Swingworker/Thread Java Basics - Anfänger-Themen 3
R Focus auf JPanel im Thread Java Basics - Anfänger-Themen 9
S musik in eigenem thread Java Basics - Anfänger-Themen 2
A Klasse,Vererbung,Interface,Singleton,Thread Java Basics - Anfänger-Themen 5
IngoF GUI mit Thread Daten austauschen. Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben