Thread.sleep() en Java – Sommeil de thread Java

Introduction

La méthode Thread.sleep() de Java peut être utilisée pour mettre en pause l’exécution du thread actuel pendant un temps spécifié en millisecondes. La valeur argument pour les millisecondes ne peut pas être négative. Sinon, elle lance IllegalArgumentException.

Une autre méthode sleep(long millis, int nanos) peut également être utilisée pour mettre en pause l’exécution du thread actuel pendant un nombre spécifié de millisecondes et de nanosecondes. Les valeurs de nanosecondes autorisées sont entre 0 et 999999.

Dans cet article, vous apprendrez sur Thread.sleep() de Java.

Comment fonctionne Thread.sleep

Thread.sleep() interagit avec le planificateur de threads pour mettre le thread actuel dans un état d’attente pendant une période de temps spécifiée. Une fois que le temps d’attente est écoulé, l’état du thread est changé en un état prêt à être exécuté et attend le CPU pour une nouvelle exécution. Le temps réel pendant lequel le thread actuel dort dépend du planificateur de threads qui fait partie du système d’exploitation.

Points importants de Java Thread.sleep

  1. Il met toujours en pause l’exécution du thread actuel.
  2. Le temps réel pendant lequel le thread dort avant de se réveiller et de commencer l’exécution dépend des minuteurs et des planificateurs système. Pour un système calme, le temps réel de sommeil est proche du temps de sommeil spécifié, mais pour un système occupé, il sera un peu plus long.
  3. Thread.sleep() ne perd aucun moniteur ni ne verrouille le thread actuel qu’il a acquis.
  4. N’importe quel autre thread peut interrompre le thread actuel en sommeil, et dans de tels cas, InterruptedException est lancée.

Exemple de Thread.sleep Java

Voici un exemple de programme où Thread.sleep() est utilisé pour mettre en pause l’exécution du thread principal pendant 2 secondes (2000 millisecondes) :

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));
    }
}

D’abord, ce code stocke le temps système actuel en millisecondes. Ensuite, il dort pendant 2000 millisecondes. Enfin, ce code affiche le nouveau temps système actuel moins le précédent temps système actuel :

Output
Sleep time in ms = 2005

Remarquez que cette différence n’est pas précisément de 2000 millisecondes. Cela est dû à la façon dont Thread.sleep() fonctionne et à l’implémentation spécifique au système d’exploitation du planificateur de threads.

Conclusion

Dans cet article, vous avez appris sur Thread.sleep() de Java.

Continuez votre apprentissage avec d’autres tutoriels Java.

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