thread sleep thread sleep method java with examples
Dans ce tutoriel, nous discuterons de la méthode Thread Sleep () en Java. Nous verrons comment la méthode Thread.Sleep () fonctionne à l'aide d'exemples:
Le java.lang.Thread.sleep (millis longs) method est la méthode fournie par la classe Thread qui met en veille le thread en cours d'exécution. Nous allons spécifier le temps de sommeil comme argument de la méthode de sommeil.
=> Jetez un œil au guide du débutant Java ici.
Ce que vous apprendrez:
Méthode Thread Sleep () en Java
La classe Thread de Java fournit deux variantes de la méthode sleep.
Le prototype des deux variantes de la méthode sleep () est décrit ci-dessous.
# 1) Variante de méthode de sommeil # 1
Prototype: public static void sleep (long millis) jette une exception InterruptedException
Paramètres: millis => la durée en millisecondes pendant laquelle le thread dort.
Valeur de retour: annuler
Jette:
- IllegalArgumentException => si millis est négatif
- InterruptedException => si un autre thread interrompt le thread actuel. Lorsque cette exception se produit, l'état interrompu du thread est effacé.
Description: Cette variante de la méthode sleep met le thread actuel en veille ou arrête temporairement son exécution pendant le nombre de millisecondes donné (fourni dans l'argument de la méthode). Cependant, pendant le sommeil, le thread ne perd pas le moniteur ni ne verrouille la propriété.
# 2) Variante de méthode de sommeil # 2
Prototype: public static void sleep (long millis, int nanos) lève InterruptdException
Paramètres:
quels sont les meilleurs téléchargeurs de musique
- millis => la durée en millisecondes pendant laquelle le thread doit dormir.
- nanos => nanosecondes supplémentaires pendant lesquelles le thread peut dormir. La plage est comprise entre 0 et 999999.
Valeur de retour: annuler
Jette:
- IllegalArgumentException => si la valeur en millis est négative ou en nanos si elle est hors plage.
- InterruptedException => si un autre thread interrompt le thread actuel. L'état interrompu du thread est effacé lorsque cette exception se produit.
Description: Cette variante de la méthode sleep oblige le thread à l'appeler en veille ou à arrêter temporairement son exécution pendant le nombre de millisecondes donné. (premier argument dans un appel de méthode). En outre, il a également fourni le nombre de nanosecondes (deuxième argument dans un appel de méthode) pour dormir.
Notez que l'exactitude et la précision de l'heure spécifiée dépendent des minuteries et des planificateurs du système. Lorsque le thread est en veille, la propriété du verrou ou du moniteur n'est pas modifiée.
Fonctionnement de la méthode Thread.Sleep
Chaque fois qu'un thread dort ou est suspendu, cela est fait par le planificateur. La méthode Thread.sleep () communique avec le planificateur de threads afin que celui-ci puisse faire changer le thread en cours d'exécution pour attendre l'état pendant une durée donnée.
Une fois cette durée spécifiée écoulée, l’état du thread passe à ‘runnable’ afin qu’il puisse attendre que le CPU procède à l’exécution.
Ainsi, la durée de sommeil du thread dépend du planificateur et non de la méthode. Comme le planificateur fait partie du système d'exploitation, l'architecture du système d'exploitation joue également un rôle dans les changements d'état du thread.
Maintenant que nous avons vu la méthode Thread.sleep () en détail, nous devons garder certains points à l'esprit lors de l'utilisation de cette méthode.
Les pointeurs incluent:
#1) Thread.sleep () met toujours en pause l'exécution du thread en cours.
#deux) La durée réelle de sommeil du thread dépend des planificateurs et des minuteries système.
Par exemple, pour un système très occupé, la durée de veille du thread peut être plus longue que celle spécifiée alors que, pour le système qui n'est pas si occupé, elle peut être plus ou moins proche d'une heure spécifiée.
# 3) Pendant que le thread est en veille, il ne perd pas les verrous ou les moniteurs qu'il avait acquis avant de s'endormir.
# 4) Le thread actuel qui est en veille peut être interrompu par n'importe quel autre thread. Dans ce cas, «InterruptedException» est levé.
Exemple de Thread.sleep en Java
Passons maintenant à un exemple illustrant la méthode de veille. Ici, nous avons une classe de thread qui a une méthode run (). Dans la méthode run (), nous appelons «Thread.sleep (1000)». Ensuite, dans la fonction principale, nous créons deux instances de ce thread, c'est-à-dire deux threads. Nous démarrons ensuite les discussions.
Dans la sortie, nous remarquons que comme les deux threads sont en cours d'exécution, les threads sont planifiés l'un après l'autre, c'est-à-dire que lorsque l'un dort, l'autre est en cours d'exécution.
Exemple:
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(); } }
Production:
Lorsque nous observons la sortie, nous constatons que Thread_0 et Thread_1 s'exécutent à tour de rôle.
Thread.sleep () avec une valeur de temps de sommeil négative
Ensuite, montrons un autre exemple de la méthode Thread.sleep (). Ici, nous avons considéré un cas particulier d'une valeur de temps de sommeil négative. Le programme est similaire au programme ci-dessus mais le temps de sommeil fourni est de -500.
Exemple:
comment obtenir la clé de sécurité du réseau pour le wifi
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(); } }
Production:
À partir de la sortie, nous pouvons voir que la méthode a jeté ‘IllegalArgumentException’ car la valeur négative du temps de sommeil n’est pas acceptable.
Questions fréquemment posées
Q # 1) Comment fonctionne la mise en veille des threads en Java?
Répondre: Lorsque sleep () est appelé sur le thread avec une durée spécifiée en millisecondes, le thread cesse son exécution. Il abandonne le processeur. Ainsi, pendant la durée pendant laquelle le thread est en veille, les autres threads peuvent utiliser le CPU.
Q # 2) Qu'est-ce que yield () et sleep () dans le thread Java?
Répondre: La méthode sleep () de thread oblige le thread à abandonner le processeur et à arrêter l'exécution. Pendant que ce thread dort, les autres threads acquièrent le processeur. Ceci est fait par le planificateur.
La méthode yield () oblige également le thread à abandonner le contrôle CPU lorsqu'il est appelé, mais la méthode sleep () présente un comportement plus déterminé par rapport à yield ().
Q # 3) Comment empêcher un thread Java de s'endormir?
Répondre: Nous arrêtons le thread Java de dormir en utilisant la méthode interrupt (). Tout thread en attente ou en sommeil peut être interrompu en appelant la méthode interrupt () de la classe Thread.
Q # 4) Peut-on tuer un thread en Java?
Répondre: Non, le thread n'est pas tué en Java. Au lieu de cela, le thread est arrêté en Java. Le thread est terminé et peut ensuite s'arrêter correctement. Nous utilisons souvent un champ booléen volatil qui est périodiquement vérifié pour tout changement de valeurs, afin de pouvoir terminer le thread.
Q # 5) Pourquoi sleep () est-il une méthode statique?
Répondre: Lors de l'appel de la méthode sleep () pour mettre le thread en veille, nous l'appelons toujours en utilisant la classe Thread.
Par exemple , Thread.sleep (1000);
comment supprimer un élément de tableau en java
L'appel ci-dessus fonctionne dans le contexte du thread actuel et met le thread actuel en veille. Nous n'appelons jamais la méthode en utilisant une instance de thread spécifique. Ainsi, la méthode est statique.
Conclusion
Dans ce tutoriel, nous avons discuté de la méthode sleep () des threads en Java. La méthode Sleep () provoque l'arrêt du thread en cours d'exécution pendant une durée spécifiée fournie en tant qu'argument de la méthode sleep.
Le planificateur système fonctionne avec la méthode de veille pour mettre le thread actuel en état d'attente. Pendant que le thread est en veille, il continue de posséder les verrous ou les moniteurs qu'il a acquis. Lorsque nous transmettons une valeur négative du temps de sommeil à la méthode sleep, elle lève «IllegalArgumentException».
Lorsque nous transmettons une valeur de temps de sommeil valide à la méthode sleep (), les autres threads s'exécuteront à tour de rôle pendant que le thread actuel est en veille.
=> Cliquez ici pour voir de A à Z des didacticiels de formation Java ici.
lecture recommandée
- Multithreading en Java - Tutoriel avec des exemples
- Multithreading en C ++ avec des exemples
- Java synchronisé: qu'est-ce que la synchronisation des threads en Java
- Threads Java avec méthodes et cycle de vie
- Tutoriel Java String | Méthodes de chaîne Java avec exemples
- Comment utiliser la méthode Java toString?
- TreeMap en Java - Tutoriel avec des exemples de TreeMap Java
- Tutoriel JAVA pour les débutants: plus de 100 tutoriels vidéo Java pratiques