Maison > Java > javaDidacticiel > Quelle est la différence entre les méthodes wait() et sleep() en Java ?

Quelle est la différence entre les méthodes wait() et sleep() en Java ?

WBOY
Libérer: 2023-08-26 23:37:21
avant
818 Les gens l'ont consulté

La méthode

Quelle est la différence entre les méthodes wait() et sleep() en Java ?

sleep() est une méthode static de la classe Thread, qui peut envoyer le thread de données en cours d'exécution dans l'état "unrunnable" , et la méthode wait() est une méthode d'instance, nous l'appelons en utilisant un objet thread et elle n'affecte que cet objet. La méthode sleep() se réveille ou appelle la méthode interrupt() après l'expiration du délai, tandis que la méthode wait() se réveille ou appelle la méthode >notify() ou notifyAll() après le temps expire. La méthode sleep() ne libère aucun verrouillage ou moniteur pendant l'attente, tandis que la méthode wait() libère aucun verrou ou moniteur pendant l'attente.

syntaxe de la méthode sleep()

public static void sleep(long millis) throws InterruptedException
Copier après la connexion

syntaxe de la méthodewait()

public final void wait() throws InterruptedException<strong>
</strong>
Copier après la connexion

exemple

public class ThreadTest implements Runnable {
   private int number = 10;
   public void methodOne() throws Exception {
      synchronized(this) {
         number += 50;
         System.out.println("Number in methodOne(): " + number);
      }
   }
   public void methodTwo() throws Exception {
      synchronized(this) {
         Thread.sleep(2000); // calling sleep() method 
         this.wait(1000); // calling wait() method
         number *= 75;
         System.out.println("Number in methodTwo(): " + number);
      }
   }
   public void run() {
      try {
         methodOne();
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
   public static void main(String[] args) throws Exception {
      ThreadTest threadTest = new ThreadTest();
      Thread thread = new Thread(threadTest);
      thread.start();
      threadTest.methodTwo();
   }
}
Copier après la connexion

output

Number in methodOne(): 60
Number in methodTwo(): 4500
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal