Threads Thread sleep() Method einfache Frage

Bobi

Bekanntes Mitglied
Ich will, dass mein Thread parallel läuft aber es tut nicht so.
Wiese läuft meine Code nicht parallel? Wo ist mein Fehler?

Java:
public class PauseThread implements Runnable{
   @Override
   public void run(){
       System.out.println("Starte Thread");
        for(int i = 0; i < 10; i++){
           System.out.println(i);
           }
       System.out.println("Beende Thread");
     
       }
}

Java:
public class PauseThreadMain {
 
   public static void main(String[] args){
     
      PauseThread pth = new PauseThread();
      Thread thr = new Thread(pth);
     
      PauseThread pth1 = new PauseThread();
      Thread thr1 = new Thread(pth1);
     
       try{
          thr.start();
          thr.sleep(1000);
          thr1.start();
          thr1.sleep(1000);       
       }catch(InterruptedException e){
          e.printStackTrace();
       } 
    }

}

Ist meine Try catch Methode in Main Methode Falsch ?
 
Zuletzt bearbeitet:

httpdigest

Top Contributor
Dein Main-Thread schläft ja auch durch die zwei `Thread.sleep(1000)` zwischen den Ausführungen der beiden parallelen Threads `thr` und `thr1`. Achte bitte darauf, dass `thr.sleep(1000)` bzw. `thr1.sleep(1000)` NICHT den parallelen Thread schlafen lägt, sondern IMMER den ausführenden Thread. Diese Methoden sind static Methoden und KEINE Instanzmethoden der Thread-Klasse!
Jede IDE sollte dir das auch sagen. Das heißt, deine sleep()-Aufrufe sind eigentlich `Thread.sleep(1000)`.
 

mrBrown

Super-Moderator
Mitarbeiter
Deine Threads würden parallel warten, allerdings machst du zwischen dein beiden Starts eine Pause von einer Sekunde, sodass der erste schon längst fertig ist, wenn der zweite gestartet wird.

Thread.sleep ist einen statische Methode, und lässt immer den aktuelle Thread, aus dem es heraus aufgerufen wird, schlafen. In deinem Fall also beide Male die main-Methode, und nicht die beiden Threads.
 

Bobi

Bekanntes Mitglied
Dein Main-Thread schläft ja auch durch die zwei `Thread.sleep(1000)` zwischen den Ausführungen der beiden parallelen Threads `thr` und `thr1`. Achte bitte darauf, dass `thr.sleep(1000)` bzw. `thr1.sleep(1000)` NICHT den parallelen Thread schlafen lägt, sondern IMMER den ausführenden Thread. Diese Methoden sind static Methoden und KEINE Instanzmethoden der Thread-Klasse!
Jede IDE sollte dir das auch sagen. Das heißt, deine sleep()-Aufrufe sind eigentlich `Thread.sleep(1000)`.

Also wie ich von dir und von @mrBrown verstanden habe Ich darf sleep Mathode nicht in Main Methode nutzen, weil es auch ganze main Methode schlafen gelegt wird. Ist das Richtig so?

Ich habe in andere Klasse wo ich mein run Methode habe mein sleep Methode implementiert und so funktioniert.
Java:
System.out.println("Starte Thread");
         
        for(int i = 10; i < 20; i++){
             System.out.println(i);
           try{
               Thread.sleep(1000);
           }catch(InterruptedException e){
               System.out.println("Irgendwas ist schief gelaufen  ");
               e.printStackTrace();
           }
        } 
       System.out.println("Beende Thread");
Aber ich verstehe nicht, wie es nur mit eine sleep Methode funktioniert.

Ich nütze keine richtige Editor mehr, weil ich die Klausur auf dem Papier schreiben soll und Eclipse oder andere Editoren haben zu viele Hilfe, was währen der Prüfung gar nicht hat.
 

mrBrown

Super-Moderator
Mitarbeiter

Bobi

Bekanntes Mitglied
Was willst du denn mit dem sleep erreichen?

Ich wollte nur wissen wie es genau die sleep Methode funktioniert.
Die Methode hält eine Thread mit bestimmte Anzahl von Millisekunden an in diese Zeit kann eine zweite Thread gestartet werden. Die zweite Thread wird auch angehalten für eine Bestimmte Zeitraum und so weite. Das ist alles, was ich über sleep Methode weis.
 

mrBrown

Super-Moderator
Mitarbeiter
Die sleep-Methode hält den aktuellen Thread an.

In obigen Bespiel gibt es drei Threads: mainThread, thr und thr1.
Thread.sleep wird im Main-Thread aufgerufen, hält also auch den Main-Thread an. thr und thr1 werden dadurch nicht beeinflusst.

Grob:
Code:
Main-Thread             thr              thr2
    |                    .                .
    |                    .                .
thr.start();-------------|                .
    |                    |                .
thr.sleep(1000);     thr.run wird         .
    |                ausgeführt           .
    |                                     .
thr1.start();-----------------------------|
    |                                     |
thr1.sleep(1000);                     thr2.run wird
    |                                 ausgeführt


Thread.sleep ist völlig unabängig von anderen gestarteten Threads. Willst du einen zweiten Thread starten und dieser soll pausieren, muss sleep aus diesem heraus aufgerufen werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Thread.sleep() Java Basics - Anfänger-Themen 5
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
A Problem mit Thread.sleep Java Basics - Anfänger-Themen 4
M Thread.sleep() Funktion Java Basics - Anfänger-Themen 1
I Thread.sleep (1000); Java Basics - Anfänger-Themen 1
P Threads Thread.sleep() Java Basics - Anfänger-Themen 7
M Fehler bei Thread.sleep() Java Basics - Anfänger-Themen 5
B Thread.sleep() Java Basics - Anfänger-Themen 1
C Thread.sleep ratsam? Java Basics - Anfänger-Themen 6
L Thread.sleep Java Basics - Anfänger-Themen 6
G problem mit thread.sleep() Java Basics - Anfänger-Themen 6
M Threads Thread.Sleep Problem im Zusammenhang mit GUI/ActionPerformed-Methode Java Basics - Anfänger-Themen 4
T Thread Sleep() Java Basics - Anfänger-Themen 4
J Thread.sleep Java Basics - Anfänger-Themen 7
A Thread.sleep() unterbrechen? Java Basics - Anfänger-Themen 3
S Thread.sleep () - Frage Java Basics - Anfänger-Themen 16
M Frage zur Methode Thread.sleep() Java Basics - Anfänger-Themen 6
O Memory Thread.sleep() Java Basics - Anfänger-Themen 5
G Problem mit Thread Sleep! Java Basics - Anfänger-Themen 3
S Thread.sleep i.V.m Button.setText() Java Basics - Anfänger-Themen 8
G Schleife mit Thread.sleep pausieren Java Basics - Anfänger-Themen 12
R Thread - sleep - interrupt Java Basics - Anfänger-Themen 18
M Thread.sleep(20) dauert 31ms ? Java Basics - Anfänger-Themen 7
E Anfänger Problem mit Thread.sleep() Java Basics - Anfänger-Themen 11
S Thread.sleep Java Basics - Anfänger-Themen 6
V Alternative zu Thread.sleep() ? Java Basics - Anfänger-Themen 6
S Runtime.exec -> Thread.sleep -> Konflikt Java Basics - Anfänger-Themen 7
A Thread.sleep Java Basics - Anfänger-Themen 9
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 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
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
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
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
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
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

Ähnliche Java Themen

Neue Themen


Oben