notify() ou notifyAll() après l'expiration du délai. La méthode sleep() ne libère aucun verrou ou moniteur pendant l'attente, tandis que la méthode wait() libère les verrous ou les moniteurs pendant l'attente. Syntaxe de la méthode sleep() publicstaticvoi"/> notify() ou notifyAll() après l'expiration du délai. La méthode sleep() ne libère aucun verrou ou moniteur pendant l'attente, tandis que la méthode wait() libère les verrous ou les moniteurs pendant l'attente. Syntaxe de la méthode sleep() publicstaticvoi">

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
WBOYavant
2023-08-26 23:37:21827parcourir

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

syntaxe de la méthodewait()

public final void wait() throws InterruptedException<strong>
</strong>

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

output

Number in methodOne(): 60
Number in methodTwo(): 4500

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer