thread sleep thread sleep method java with examples
In diesem Tutorial werden wir die Thread Sleep () -Methode in Java diskutieren. Wir werden anhand von Beispielen sehen, wie die Thread.Sleep () -Methode funktioniert:
Das java.lang.Thread.sleep (lange Millis) Methode ist die von der Thread-Klasse bereitgestellte Methode, mit der der aktuell ausgeführte Thread in den Ruhezustand versetzt wird. Wir werden die Schlafzeit als Argument der Schlafmethode angeben.
=> Schauen Sie sich hier den Java Beginners Guide an.
Was du lernen wirst:
Thread Sleep () -Methode In Java
Die Thread-Klasse von Java bietet zwei Varianten der Sleep-Methode.
Der Prototyp beider Varianten der sleep () -Methode wird nachfolgend beschrieben.
# 1) Schlafmethodenvariante # 1
Prototyp: public static void sleep (long millis) löst InterruptedException aus
Parameter: Millis => die Zeitdauer in Millisekunden, für die der Thread schläft.
Rückgabewert: Leere
Würfe:
- IllegalArgumentException => wenn millis negativ ist
- InterruptedException => wenn ein anderer Thread den aktuellen Thread unterbricht. Wenn diese Ausnahme auftritt, wird der unterbrochene Status des Threads gelöscht.
Beschreibung: Diese Variation der Schlafmethode versetzt den aktuellen Thread in den Ruhezustand oder stoppt vorübergehend seine Ausführung für die angegebene Anzahl von Millisekunden (im Methodenargument angegeben). Im Ruhezustand verliert der Thread jedoch nicht den Monitor oder sperrt den Besitz.
# 2) Schlafmethodenvariante # 2
Prototyp: Der öffentliche statische Leerschlaf (Long Millis, Int Nanos) löst eine InterruptdException aus
Parameter:
So erstellen Sie eine Java-Anwendung in Eclipse
- Millis => Die Dauer in Millisekunden, für die der Thread schlafen muss.
- nanos => zusätzliche Nanosekunden, für die der Thread schlafen kann. Der Bereich liegt zwischen 0 und 999999.
Rückgabewert: Leere
Würfe:
- IllegalArgumentException => Wenn der Millis-Wert negativ ist oder der Nanos-Wert außerhalb des Bereichs liegt.
- InterruptedException => Wenn ein anderer Thread den aktuellen Thread unterbricht. Der unterbrochene Status des Threads wird gelöscht, wenn diese Ausnahme auftritt.
Beschreibung: Diese Variante der Schlafmethode bewirkt, dass der Thread ihn in den Ruhezustand aufruft oder seine Ausführung für die angegebene Anzahl von Millisekunden vorübergehend stoppt. (erstes Argument in einem Methodenaufruf). Außerdem wurde die Anzahl der Nanosekunden (zweites Argument in einem Methodenaufruf) für den Schlaf angegeben.
Beachten Sie, dass die Genauigkeit und Präzision der angegebenen Zeit von den Systemzeitgebern und -planern abhängt. Wenn der Thread in den Ruhezustand wechselt, wird der Besitz des Schlosses oder Monitors nicht geändert.
Arbeiten der Thread.Sleep-Methode
Immer wenn ein Thread in den Ruhezustand versetzt oder angehalten wird, wird dies vom Scheduler ausgeführt. Die Methode Thread.sleep () kommuniziert mit dem Thread-Scheduler, sodass der Scheduler bewirken kann, dass sich der aktuell ausgeführte Thread ändert und auf den Status für eine bestimmte Dauer wartet.
Sobald diese festgelegte Zeit abgelaufen ist, wird der Status des Threads in 'ausführbar' geändert, damit er warten kann, bis die CPU mit der Ausführung fortfährt.
Daher hängt die Dauer für den Ruhezustand des Threads vom Scheduler und nicht von der Methode ab. Da der Scheduler Teil des Betriebssystems ist, spielt die Betriebssystemarchitektur auch eine Rolle bei den Statusänderungen des Threads.
Nachdem wir die Thread.sleep () -Methode im Detail gesehen haben, sollten wir einige Punkte bei der Verwendung dieser Methode berücksichtigen.
Zu den Zeigern gehören:
# 1) Die Thread.sleep () -Methode pausiert immer die Ausführung des aktuellen Threads.
#zwei) Die tatsächliche Dauer, für die der Thread in den Ruhezustand versetzt wird, hängt von den Schedulern und Systemzeitgebern ab.
Zum Beispiel, Bei einem sehr ausgelasteten System kann die Ruhezeit des Threads länger als angegeben sein, während sie bei einem System, das nicht so ausgelastet ist, möglicherweise mehr oder weniger nahe an einer bestimmten Zeit liegt.
#3) Während der Thread schläft, verliert er keine Sperren oder Monitore, die er vor dem Schlafengehen erworben hat.
# 4) Der aktuelle Thread im Ruhezustand kann von jedem anderen Thread unterbrochen werden. In diesem Fall wird 'InterruptedException' ausgelöst.
Thread.sleep Beispiel In Java
Fahren wir nun mit einem Beispiel fort, das die Schlafmethode demonstriert. Hier haben wir eine Thread-Klasse, die eine run () -Methode hat. In der run () -Methode rufen wir 'Thread.sleep (1000)' auf. Dann erstellen wir in der Hauptfunktion zwei Instanzen dieses Threads, d. H. Zwei Threads. Wir starten dann die Threads.
In der Ausgabe stellen wir fest, dass, da beide Threads ausgeführt werden, die Threads nacheinander geplant werden, d. H. Wenn einer schläft, wird der andere ausgeführt.
Beispiel:
class SleepThread extends Thread { //run method for thread public void run() { for(int i=1;i<5;i++) { try { //call sleep method of thread Thread.sleep(1000); }catch(InterruptedException e){System.out.println(e);} //print current thread instance with loop variable System.out.println(Thread.currentThread().getName() + ' : ' + i); } } } class Main{ public static void main(String args()) { //create two thread instances SleepThread thread_1 = new SleepThread(); SleepThread thread_2 = new SleepThread(); //start threads one by one thread_1.start(); thread_2.start(); } }
Ausgabe:
Wenn wir die Ausgabe beobachten, stellen wir fest, dass Thread_0 und Thread_1 abwechselnd ausgeführt werden.
Thread.sleep () mit negativem Ruhezeitwert
Als nächstes zeigen wir ein weiteres Beispiel für die Thread.sleep () -Methode. Hier haben wir einen Sonderfall eines negativen Schlafzeitwertes betrachtet. Das Programm ähnelt dem obigen Programm, die angegebene Ruhezeit beträgt jedoch -500.
Beispiel:
class SleepThread extends Thread { public void run() { for(int i=1;i<5;i++) { try { //call sleep method with negative value of time Thread.sleep(-500); }catch(InterruptedException e){System.out.println(e);} System.out.println(i); } } } class Main{ public static void main(String args()) { //create two thread instances SleepThread t1=new SleepThread(); SleepThread t2=new SleepThread(); //start the threads one by one t1.start(); t2.start(); } }
Ausgabe:
.net Interview Frage und Antworten
Aus der Ausgabe können wir ersehen, dass die Methode 'IllegalArgumentException' ausgelöst hat, da der negative Wert der Ruhezeit nicht akzeptabel ist.
Häufig gestellte Fragen
F # 1) Wie funktioniert der Thread-Schlaf in Java?
Antworten: Wenn sleep () für den Thread mit einer bestimmten Zeit in Millisekunden aufgerufen wird, beendet der Thread seine Ausführung. Es gibt die CPU frei. Während der Dauer, in der der Thread schläft, können die anderen Threads die CPU verwenden.
F # 2) Was ist Yield () und Sleep () in Thread Java?
Antworten: Die sleep () -Methode des Threads bewirkt, dass der Thread die CPU freigibt und die Ausführung beendet. Während dieser Thread in den Ruhezustand versetzt wird, erwerben die anderen Threads die CPU. Dies erfolgt durch den Scheduler.
Die Yield () -Methode bewirkt auch, dass der Thread beim Aufruf die CPU-Steuerung aufgibt, die Sleep () -Methode jedoch im Vergleich zu Yield () ein entschlosseneres Verhalten zeigt.
F # 3) Wie verhindern Sie, dass ein Java-Thread in den Ruhezustand wechselt?
Antworten: Mit der Interrupt () -Methode verhindern wir, dass der Java-Thread in den Ruhezustand wechselt. Jeder Thread, der wartet oder schläft, kann durch Aufrufen der Interrupt () -Methode der Thread-Klasse unterbrochen werden.
F # 4) Können wir einen Thread in Java beenden?
Antworten: Nein, der Thread wird in Java nicht beendet. Stattdessen wird der Thread in Java gestoppt. Der Thread wird beendet und kann dann ordnungsgemäß heruntergefahren werden. Wir verwenden häufig ein flüchtiges boolesches Feld, das regelmäßig auf Wertänderungen überprüft wird, damit wir den Thread beenden können.
F # 5) Warum ist sleep () eine statische Methode?
Antworten: Wenn Sie die sleep () -Methode aufrufen, um den Thread in den Ruhezustand zu versetzen, rufen wir ihn immer mit der Thread-Klasse auf.
Zum Beispiel , Thread.sleep (1000);
Der obige Aufruf funktioniert im aktuellen Thread-Kontext und versetzt den aktuellen Thread in den Ruhezustand. Wir rufen die Methode niemals mit einer bestimmten Thread-Instanz auf. Somit ist die Methode statisch.
beste mp3 downloader app für android
Fazit
In diesem Tutorial haben wir die sleep () -Methode von Threads in Java erläutert. Die Sleep () -Methode bewirkt, dass der aktuelle Thread, der ausgeführt wird, seine Ausführung für einen bestimmten Zeitraum beendet, der als Argument für die Sleep-Methode angegeben wird.
Der Systemplaner arbeitet mit der Schlafmethode, um den aktuellen Thread in den Wartezustand zu versetzen. Während der Thread schläft, besitzt er weiterhin die Sperren oder Monitore, die er erworben hat. Wenn wir einen negativen Wert für die Schlafzeit an die Schlafmethode übergeben, wird 'IllegalArgumentException' ausgelöst.
Wenn wir einen gültigen Ruhezeitwert an die sleep () -Methode übergeben, werden die anderen Threads abwechselnd ausgeführt, während der aktuelle Thread in den Ruhezustand versetzt wird.
=> Hier finden Sie A-Z der Java-Schulungsanleitungen.
Literatur-Empfehlungen
- Multithreading in Java - Tutorial mit Beispielen
- Multithreading in C ++ mit Beispielen
- Java synchronisiert: Was ist Thread-Synchronisation in Java?
- Java-Threads mit Methoden und Lebenszyklus
- Java String Tutorial | Java-String-Methoden mit Beispielen
- Wie verwende ich die Java toString-Methode?
- TreeMap in Java - Tutorial mit Java TreeMap-Beispielen
- JAVA-Tutorial für Anfänger: Über 100 praktische Java-Video-Tutorials