Packagecom.example; Public classApp {/*Wait\notify\notifyall is a built-in method of Object * Wait: The thread holding the object surrenders control of the object notify: Notifies a waiting control of the object Thread can continue to run Notifyall: Notifies all threads that are waiting for control of the object to continue running*/ Public Static voidMain (string[] args) {MyThread Mt=NewMyThread (); Mt.start (); //When you call wait, you must be sure that you have control over the object, so you need to add synchronized synchronized(MT) {Try{mt.wait (); } Catch(interruptedexception e) {e.printstacktrace (); } System.out.println (Mt.total); } }}
Packagecom.example; Public classMyThreadextendsThread {intTotal = 0; Public voidrun () {//when calling notify, you must be sure that you have control over the object, so you need to add synchronized synchronized( This) { for(inti = 0; I < 100; i++) { Total+=i; } notify (); } } }
Java Multithreading (Wait/notify/notifyall)