Vous ne pouvez pas appeler la méthode wait() sans acquérir le verrou. En Java, une fois le verrou acquis, il faut appeler la méthode wait() sur l'objet (peut être avec ou sans timeout). Si nous essayons d'appeler la méthode wait() sans acquérir le verrou, elle peut lever l'exception java.lang.IllegalMonitorStateException.
public class ThreadStateTest extends Thread { public void run() { try { <strong> </strong>wait(1000); } catch(InterruptedException ie) { ie.printStackTrace(); } } public static void main(String[] s) { ThreadStateTest test = new ThreadStateTest(); <strong> </strong>test.start(); } }
Dans l'exemple ci-dessus, nous devons appeler la méthode wait() sans acquérir le verrou, ce qui générera une IllegalMonitorStateException au moment de l'exécution. Pour résoudre ce problème, nous devons acquérir le verrou avant d'appeler la méthode wait() et déclarer la méthodesynchronisée run().
Exception in thread "Thread-0" java.lang.IllegalMonitorStateException at java.lang.Object.wait(Native Method) at ThreadStateTest.run(ThreadStateTest.java:4)
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!