Java中的notify()和wait()是用于實現線程之間同步的關鍵字。當多個線程共同訪問一個共享資源的時候,就需要使用notify()和wait()來實現線程間的協作。
wait()方法是讓線程在當前對象上等待,并且釋放當前對象的鎖。當wait()方法被調用時,線程會進入一個等待池中,等待其他線程調用notify()或notifyAll()來喚醒它。wait()方法的使用步驟為:
synchronized (object) { while (condition) { object.wait(); } }
在上面的代碼中,condition表示一個條件判斷語句,如果這個條件不成立,那么線程就會調用wait()方法等待。當其他線程調用了notify()或notifyAll()方法時,等待池中的線程就會被喚醒。
notify()方法則是通知一個正在等待池中等待的線程,讓它醒來繼續執行。在多數情況下,notify()方法是與wait()方法搭配使用的。當調用notify()方法時,正在等待池中的線程中有一個會被喚醒,但是哪個線程被喚醒是不確定的。
synchronized (object) { object.notify(); }
Java中的notify()和wait()是Java并發編程中的重要概念,在實現多線程之間的同步和協作方面起到了重要的作用。