Thread.sleep() in Java – Java Thread sleep

Einführung

Die Java Thread.sleep()-Methode kann verwendet werden, um die Ausführung des aktuellen Threads für eine angegebene Zeitdauer in Millisekunden zu pausieren. Der Argumentwert für Millisekunden kann nicht negativ sein. Andernfalls wirft es eine IllegalArgumentException.

sleep(long millis, int nanos) ist eine weitere Methode, die verwendet werden kann, um die Ausführung des aktuellen Threads für eine angegebene Anzahl von Millisekunden und Nanosekunden zu pausieren. Die erlaubten Nanosekundenwerte liegen zwischen 0 und 999999.

In diesem Artikel erfahren Sie mehr über das Thread.sleep()-Verfahren in Java.

Wie Thread.sleep funktioniert

Thread.sleep() interagiert mit dem Thread-Scheduler, um den aktuellen Thread für eine bestimmte Zeitspanne in den Wartezustand zu versetzen. Sobald die Wartezeit abgelaufen ist, wird der Threadzustand in einen ausführbaren Zustand geändert und wartet auf die CPU für weitere Ausführung. Die tatsächliche Zeit, die der aktuelle Thread schläft, hängt vom Thread-Scheduler ab, der Teil des Betriebssystems ist.

Java Thread.sleep wichtige Punkte

  1. Es unterbricht immer die Ausführung des aktuellen Threads.
  2. Die tatsächliche Zeit, die der Thread schläft, bevor er aufwacht und mit der Ausführung beginnt, hängt von den Systemtimern und -planern ab. Für ein ruhiges System ist die tatsächliche Schlafzeit nahezu gleich der angegebenen Schlafzeit, aber für ein aktives System kann sie etwas länger sein.
  3. Thread.sleep() verliert keine Monitore und sperrt nicht den aktuellen Thread, den er erworben hat.
  4. Jeder andere Thread kann den aktuellen Thread im Schlaf unterbrechen, und in solchen Fällen wird InterruptedException ausgelöst.

Java Thread.sleep Beispiel

Hier ist ein Beispielprogramm, bei dem Thread.sleep() verwendet wird, um die Ausführung des Hauptthreads für 2 Sekunden (2000 Millisekunden) zu pausieren:

ThreadSleep.java
package com.journaldev.threads;

public class ThreadSleep {

    public static void main(String[] args) throws InterruptedException {
        long start = System.currentTimeMillis();

        Thread.sleep(2000);

        System.out.println("Sleep time in ms = " + (System.currentTimeMillis() - start));
    }
}

Zuerst speichert dieser Code die aktuelle Systemzeit in Millisekunden. Dann schläft er für 2000 Millisekunden. Schließlich gibt dieser Code die Differenz zwischen der neuen aktuellen Systemzeit und der vorherigen aktuellen Systemzeit aus:

Output
Sleep time in ms = 2005

Beachten Sie, dass diese Differenz nicht genau 2000 Millisekunden beträgt. Dies liegt an der Funktionsweise von Thread.sleep() und der betriebssystemspezifischen Implementierung des Thread-Schedulers.

Abschluss

In diesem Artikel haben Sie mehr über Thread.sleep() in Java erfahren.

Setzen Sie Ihr Lernen mit weiteren Java-Tutorials fort.

Source:
https://www.digitalocean.com/community/tutorials/thread-sleep-java