Chaque fois que la méthode wait() est appelée sur un objet, le thread actuel attend qu'un autre thread appelle la méthode notify() ou notifyAll() sur cet objet, alors que wait( long timeout) fait attendre le thread actuel jusqu'à ce qu'un autre thread appelle la méthode notify() ou notifyAll() sur cet objet, ou que le délai d'attente spécifié soit écoulé.
Dans le programme ci-dessous, lorsque wait() est appelé sur un objet, le thread entre dans l'état d'attente à partir de l'état d'exécution. Il attend que d'autres threads appellent notify() ou notifyAll() pour entrer dans l'état exécutable, ce qui formera une impasse.
Exempleclass MyRunnable implements Runnable { public void run() { synchronized(this) { System.out.println("In run() method"); try { this.wait(); System.out.println("Thread in waiting state, waiting for some other threads on same object to call notify() or notifyAll()"); } catch (InterruptedException ie) { ie.printStackTrace(); } } } } public class WaitMethodWithoutParameterTest { public static void main(String[] args) { MyRunnable myRunnable = new MyRunnable(); Thread thread = new Thread(myRunnable, "Thread-1"); thread.start(); } }
In run() method
wait(long)
Dans le programme ci-dessous, lorsquewait(1000) est appelé sur l'objet, le thread entre dans l'état d'attente à partir de état d'exécution, même si si notify() ou notifyAll() n'est pas appelé après le délai d'attente, le thread entrera également dans l'état exécutable à partir de l'état waiting.
Exempleclass MyRunnable implements Runnable { public void run() { synchronized(this) { System.out.println("In run() method"); try { <strong> this.wait(1000); </strong> System.out.println("Thread in waiting state, waiting for some other threads on same object to call notify() or notifyAll()"); } catch (InterruptedException ie) { ie.printStackTrace(); } } } } public class WaitMethodWithParameterTest { public static void main(String[] args) { MyRunnable myRunnable = new MyRunnable(); Thread thread = new Thread(myRunnable, "Thread-1"); thread.start(); } }
In run() method Thread in waiting state, waiting for some other threads on same object to call notify() or notifyAll()
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!